2012-02-17 90 views
1
package com.venkat.pack; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
public class SOAPClientActivity extends Activity { 
    private static final String SOAP_ACTION = "Z_CUSTOMER_LOOKUP"; 
    private static final String METHOD_NAME = "Z_CUSTOMER_LOOKUP"; 
    private static final String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style"; 
    private static final String URL = "http://*********:8000/sap/bc/srt/wsdl/srvc_14DAE9C8D79F1EE193CF0AB8FEE64345/wsdl11/allinone/ws_policy/document?sap-client=*****"; //this is my wsdl url. 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button btTest = (Button) this.findViewById(R.id.btTest); 
     btTest.setOnClickListener(btTestListener); 


    //whenever click the button 
    } 

    public Button.OnClickListener btTestListener = new Button.OnClickListener() { 
     public void onClick(View v) { 
      try { 


       // Create SOAP request 
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
       envelope.setOutputSoapObject(request); 
       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
       androidHttpTransport.call(SOAP_ACTION, envelope); 

       // Get response from envelope 
       Object result = envelope.getResponse(); 

       // Display result 
       Toast.makeText(SOAPClientActivity.this, result.toString(), 
         50000).show(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
} 

我在哪里可以追加用户名和密码在上面code.when我正在运行我得到的休耕异常在我的eclipse:02-17 18:33:35.254: WARN/System.err(608): org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/wsdl/}wsdl:definitions targetNamespace='urn:sap-com:document:sap:soap:functions:mc-style'>@1:686 in [email protected])如何从Android调用SAP SOAP Web服务?用户名和密码。?

回答

0

SAP的logcat的程序允许参数SAP用户和SAP-密码作为URL参数追加(与sap-client一样)。试试看,它应该解决问题。

+0

我添加了用户名和密码作为Url参数休闲URL private static final String URL =“http:// *********:****/sap/bc/srt/wsdl/srvc_14DAE9C8D79F1EE193CF0AB8FEE64345 ?/ wsdl11/ALLINONE/ws_policy /文件SAP-客户= *****&用户名= *******&密码= ******“;我得到了休耕Excxeption:02-24 12:37:44.159:WARN/System.err(530):java.net.SocketTimeoutException 02-24 12:37:44.159:WARN/System.err(530):at org .ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:130) – Venkat 2012-02-24 07:07:25

+0

您应该将参数“UserName”更改为“sap-user”和“password”为“sap-password”。 – chrisdennig 2012-02-24 13:01:28

0

在您的情况下,您需要使用基本身份验证调用SAP webservice。使用HttpTransportBasicAuth insted的的HttpTransportSE见下文展示如何调用HttpTransportBasicAuth

HttpTransportBasicAuth aht = new HttpTransportBasicAuth(url, username, password); 

让我们知道如果它的工作需要更多的信息的例子。

+0

当我得到了下面的异常:02-08 17:58:20.084:E/AndroidRuntime(438):java.lang.NoClassDefFoundError:javax.microedition.io.Connector我该如何解决? – Venkat 2012-02-21 12:40:56

相关问题