2012-10-18 13 views
0

我試圖訪問從我的Android應用程序託管在Tomcat服務器的JAX-WS webservice與Ksoap2庫的幫助。當我運行應用程序它在信封中拋出了一個肥皂故障。bodyIn調用(打印1.1 ;-))。KSOAP2 - envelope.bodyIn或envelop.getResponse()給皁故障

在logcat的

,我越來越: 找不到{} http://titpl.com/service/UserLogon../派遣UserLogonOperation方法..

,我將不勝感激,如果任何人都可以提供任何建議。

我的Android代碼:

private final String NAMESPACE ="http://titpl.com/service/UserLogon/"; 

private final String URL="http://10.0.2.2:8085/PrepaidMobileServer/UserLogonService?wsdl"; 

private final String SOAP_ACTION ="http://titpl.com/service/UserLogon/UserLogonOperation"; 

    final String METHOD_NAME = "UserLogonOperation"; 

    Login_Res login_res=new Login_Res(); 
    Log.i("WSC ACT", "inside the method"); 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    PropertyInfo cardprop = new PropertyInfo(); 

    cardprop.setName("login_req"); 
    cardprop.setValue(login_req); 
    cardprop.setType(Login_Req.class); 


    request.addProperty(cardprop); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
    envelope.dotNet = false; 
    envelope.setOutputSoapObject(request); 

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try { 

     System.out.println(login_req.getNric()); 
     System.out.println(login_req.getPassword()); 
     System.out.println(request.getProperty("login_req")); 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     System.out.println("------------------------------1------------------------------"); 
     //get the response 
     //SoapObject response = (SoapObject) envelope.getResponse(); 
     //SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
     //SoapObject response = (SoapObject) envelope.bodyIn; 

     if (envelope.bodyIn instanceof SoapFault) { 
      String str= ((SoapFault) envelope.bodyIn).faultstring; 
      Log.i("", str); 
      System.out.println("------------------------------1.1-------------------------------"); 

     } else { 
      SoapObject response = (SoapObject) envelope.bodyIn; 
      Log.d("WS", String.valueOf(response)); 
      System.out.println("------------------------------1.2-------------------------------"); 
      Log.i("WSC:UserLogonOperation", response.toString()); 
      login_res.setNric(response.getProperty(1).toString()); 
      login_res.setStatus(response.getProperty(2).toString()); 
      login_res.setDesc(response.getProperty(3).toString()); 

     } 

    } catch (Exception e) { 
     Log.i(" Exception in WSC:UserLogonOperation", e.toString()); 
     e.printStackTrace(); 
    } 

我的WSDL:

<!-- 
Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2-hudson-740-. 
--> 
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://titpl.com/service/UserLogon" xmlns:ns0="http://titpl.com/service/UserLogon/request" xmlns:ns1="http://titpl.com/service/UserLogon/response" name="UserLogon" targetNamespace="http://titpl.com/service/UserLogon"> 
<wsdl:types> 
<xsd:schema> 
<xsd:import namespace="http://titpl.com/service/UserLogon/request" schemaLocation="http://localhost:8085/PrepaidMobileServer/UserLogonService?xsd=1"/> 
<xsd:import namespace="http://titpl.com/service/UserLogon/response" schemaLocation="http://localhost:8085/PrepaidMobileServer/UserLogonService?xsd=2"/> 
</xsd:schema> 
</wsdl:types> 
<wsdl:message name="GetUserLogonRequest"> 
<wsdl:part name="parameters" element="ns0:Login_Req"/> 
</wsdl:message> 
<wsdl:message name="GetUserLogonResponse"> 
<wsdl:part name="parameters" element="ns1:Login_Res"/> 
</wsdl:message> 
<wsdl:portType name="UserLogonPortType"> 
<wsdl:operation name="UserLogonOperation"> 
<wsdl:input name="GetUserLogonRequest" message="tns:GetUserLogonRequest"/> 
<wsdl:output name="GetUserLogonResponse" message="tns:GetUserLogonResponse"/> 
</wsdl:operation> 
</wsdl:portType> 
<wsdl:binding name="UserLogonSoap" type="tns:UserLogonPortType"> 
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
<wsdl:operation name="UserLogonOperation"> 
<soap:operation soapAction=""/> 
<wsdl:input> 
<soap:body use="literal"/> 
</wsdl:input> 
<wsdl:output> 
<soap:body use="literal"/> 
</wsdl:output> 
</wsdl:operation> 
</wsdl:binding> 
<wsdl:service name="UserLogonService"> 
<wsdl:port name="UserLogonPortType" binding="tns:UserLogonSoap"> 
<soap:address location="http://localhost:8085/PrepaidMobileServer/UserLogonService"/> 
</wsdl:port> 
</wsdl:service> 
</wsdl:definitions> 

的logcat:

0-18 07:28:30.817: I/WSC ACT(1872): inside the method 
10-18 07:28:30.817: I/System.out(1872): ------------------------------1------------------------------- 
10-18 07:28:31.197: I/System.out(1872): ------------------------------2------------------------------- 
10-18 07:28:31.197: I/System.out(1872): as 
10-18 07:28:31.197: I/System.out(1872): we 
10-18 07:28:31.197: I/System.out(1872): [email protected] 
10-18 07:28:33.647: I/System.out(1872): ------------------------------3------------------------------- 
10-18 07:28:33.647: I/(1872): Cannot find dispatch method for {http://titpl.com/service/UserLogon/}UserLogonOperation 
10-18 07:28:33.647: I/System.out(1872): ------------------------------3.1------------------------------- 
10-18 07:28:33.647: I/System.out(1872): ------------------------------4------------------------------- 
10-18 07:28:33.647: I/System.out(1872): -----------------------------null------------------------------- 
10-18 07:28:33.667: D/AndroidRuntime(1872): Shutting down VM 
10-18 07:28:33.667: W/dalvikvm(1872): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
10-18 07:28:33.697: E/AndroidRuntime(1872): FATAL EXCEPTION: main 
10-18 07:28:33.697: E/AndroidRuntime(1872): java.lang.NullPointerException 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at com.android.tiwallet.LoginActivity.onClick(LoginActivity.java:91) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at android.view.View.performClick(View.java:3511) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at android.view.View$PerformClick.run(View.java:14105) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at android.os.Handler.handleCallback(Handler.java:605) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at android.os.Looper.loop(Looper.java:137) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
10-18 07:28:33.697: E/AndroidRuntime(1872):  at dalvik.system.NativeStart.main(Native Method) 
10-18 07:28:34.237: I/dalvikvm(1872): threadid=3: reacting to signal 3 
10-18 07:28:34.317: I/dalvikvm(1872): Wrote stack traces to '/data/anr/traces.txt' 
10-18 07:28:36.847: I/Process(1872): Sending signal. PID: 1872 SIG: 9 
+0

發佈logcat的消息也 – Randroid

+0

我已經更新了logcat的輸出 – jAnA

回答

0

嘗試在網址中刪除wsdl

private final String URL="http://10.0.2.2:8085/PrepaidMobileServer/UserLogonService/"; 
+0

的問題我試過這個網址我也遇到了同樣的錯誤。 – jAnA

0

從你的Web服務,該SOAP_ACTION應該是這樣的

private final String SOAP_ACTION ="UserLogonPortType"; 
    // equal the line: <wsdl:portType name="UserLogonPortType"> 

代替

private final String SOAP_ACTION ="http://titpl.com/service/UserLogon/UserLogonOperation";