2013-08-02 60 views
2

代码:传递soap对象(soap1.2)android时无法获得HttpResponse的响应?

  String response ; 
      try { 
       final String SOAP_ACTION = "http://tempuri.org/myAction"; 
       final String URL = "MYURL"; 
       HttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(URL); 
       String bodyOut = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">" 
         + " <soapenv:Header/>" 
         + " <soapenv:Body>" 
         ........ MY Data....... 
         + "  </tem:Login>" 
         + " </soapenv:Body>" + "</soapenv:Envelope>"; 

       StringEntity se = new StringEntity(bodyOut, HTTP.UTF_8); 
        //StringEntity se = new StringEntity(request1, HTTP.UTF_8); 
       se.setContentType("text/xml"); 
       httpPost.addHeader("SOAPAction", SOAP_ACTION); 
       httpPost.setEntity(se); 

       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity resEntity = httpResponse.getEntity(); 
       response = EntityUtils.toString(resEntity); 
       if (response != null) { 
        Log.i("Response", "" + response);// this is not being printed 
        Log.i("test response", "not null");// this is being printed 
       } 
       else 
        Log.i("Response", "null"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

也不例外,但是:Log.i("Response", "" + response);// this is not being printed

logcat的:

08-02 19:04:51.929: I/test response(20413): not null 
+1

Log'httpResponse.getStatusLine()'。这表示您的邮件无法处理。 – Raghunandan

+0

@Raghunandan谢谢:),你是对的我得到'HTTP/1.1 400 BadRequest' –

+0

http://stackoverflow.com/questions/8087515/wcf-service-using-basichttpbinding-is-still-sending-content-type -text-XML?RQ = 1。检查这个接近你的错误状态 – Raghunandan

回答

2

wsHttpBindingWCF service Android

所以我已经解决THI s使用以下内容:

String METHOD_NAME = "MyMethodName"; 
String NAMESPACE = "http://tempuri.org/"; 
String URL = "MyUr;"; 
String SOAP_ACTION = "http://tempuri.org/MySoapAction"; 



SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

PropertyInfo req = new PropertyInfo(); 
req.name = "xmlstring"; 
req.namespace = NAMESPACE; 
req.type = String.class; 
req.setValue("........ MY Data.......");// without these `tags <soapenv:` 
request.addProperty(req); 

Element e = new Element(); 
e.setName("To"); 
e.setNamespace("http://www.w3.org/2005/08/addressing"); 
e.addChild(Node.TEXT,"MyUrl"); 

Element e1 = new Element(); 
e1.setName("Action"); 
e1.setNamespace("http://www.w3.org/2005/08/addressing"); 
e1.addChild(Node.TEXT, 
     "http://tempuri.org/SoapAction"); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
     SoapEnvelope.VER12); 
envelope.dotNet = true; 
envelope.headerOut = new Element[] { e, e1 }; 
envelope.setOutputSoapObject(request); 

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
androidHttpTransport.call(SOAP_ACTION, envelope); 
SoapPrimitive result = (SoapPrimitive) envelope.getResponse(); 

String resultData = result.toString(); 
Log.i("Result", "" + resultData); 
+1

伟大的人。好一个。 – Nirmal