2012-12-26 174 views
0

如何才能使用WebService?这是我的代码:Web服务Android肥皂

WebServiceParams ws = new WebServiceParams(context); 

    SoapObject request = new SoapObject(ws.getWSNameSpace(), ws.getWSHelloMethod()); 

    SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    soapSerializationEnvelope.setOutputSoapObject(request); 

    request.addProperty("name", "Charly"); 

    try { 
     HttpTransportSE httpTransportSE = new HttpTransportSE(ws.getWSUrl()); 
     httpTransportSE.debug = true; 

     httpTransportSE.call(ws.getWSNameSpace() + ws.getWSLoginMethod(), soapSerializationEnvelope); 

     String xmlResult = soapSerializationEnvelope.getResponse().toString(); 

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

而且我得到的SOAPFault的faultcode SoapClient的faultstring解组错误意想不到的元素URI:“”本地“名”预期的元素是< {}请求>

的主要部分webservice是:

<request> 
     <name>?</name> 
</request> 

我该如何写请求标记并在名称内部发送它?

回答

1

我不知道你是否在使用库。 我能够使用Ksoap2达到此目的。

在这里你有一个例子。希望能帮助到你。

public static int getTotalRows(){ 
    SoapObject request = new SoapObject(Variables.WEBSERVICE_NAMESPACE, Variables.METHOD_GETDEALS_TOTAL); 
    SoapSerializationEnvelope env = new  SoapSerializationEnvelope(SoapEnvelope.VER11); 
    env.dotNet = true; 
    env.setOutputSoapObject(request); 
    HttpTransportSE androidHttpTransport = new  HttpTransportSE(Variables.WEBSERVICE_URL); 
    int totalRows = 0; 

    try { 
     androidHttpTransport.call(Variables.SOAP_ACTION_GETDEALS_TOTALROWS, env); 
     SoapPrimitive response = (SoapPrimitive)env.getResponse(); 
     totalRows = Integer.valueOf(response.toString()); 
     Log.i(Variables.TAG, response.toString()); 
     return totalRows; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return totalRows; 
    } catch (XmlPullParserException e) { 
     e.printStackTrace(); 
     return totalRows; 
    } catch (NumberFormatException e) { 
     e.printStackTrace(); 
     return totalRows; 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
     return totalRows; 
    } 
} 
+0

这里真正的问题是如何通过webservice发送POJO? – user1893074

+0

您可以尝试使用Gson将pojo序列化为JSON。 – blindado