2015-05-12 58 views
0

嘗試在Android中使用kso​​ap2調用svc webservice(託管在IIS服務器中)時出現'InternalServiceFault'異常。嘗試調用svc webservice(託管在IIS服務器中)時出現'InternalServiceFault'異常

異常發生:

W/System.err的:的SOAPFault - 的faultcode: '一個:InternalServiceFault' faultstring:「OperationFormatter遇到無效的消息正文。 預期會找到節點類型'Element',名稱爲'GetUnits',命名空間'http://tempuri.org/'爲 。找到節點類型'Element',名稱爲 'GetUnits'和名稱空間'http://tempuri.org/IRestaurant/'' faultactor:'null'詳細信息:[email protected] 05-11 22:26:30.068 913-921/com。 org.ansal.placemaorder W/System.err的:在 org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137)

請求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tem:itemId>1</tem:itemId> 
    </soapenv:Body> 
</soapenv:Envelope> 

調用代碼:

new FetchData(LoginActivity.this).execute("http://tempuri.org/IRestaurant/","GetUnits","http://10.0.0.2/RestaurantServices/RegistrationServices.svc"); 

服務電話

@Override 
protected String doInBackground(String... params) { 
    String result=""; 
    String _NAMESPACE = params[0]; 
    String _METHOD_NAME = params[1]; 
    String URL  = params[2]; 
    String _SOAP_ACTION = _NAMESPACE + _METHOD_NAME; 
    SoapObject request = new SoapObject(_NAMESPACE, _METHOD_NAME); 
    request.addProperty("itemId",1); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 

    envelope.setOutputSoapObject(request); 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
    try { 
     androidHttpTransport.debug = true; 
     androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding= \"UTF-8\"?>"); 
     androidHttpTransport.call(_SOAP_ACTION, envelope); 
     SoapObject resultsRequestSOAP = (SoapObject) envelope.getResponse(); 
     result = resultsRequestSOAP.toString(); 
     System.out.println("****** RESULT: " + resultsRequestSOAP.toString()); 
    } catch (Exception e) { 
     System.out.println("******* THERE WAS AN ERROR ACCESSING THE WEB SERVICE"); 
     e.printStackTrace(); 
    } 

    return result; 
    } 
+0

看起來你已經不匹配的不便。你的'_NAMESPACE'等於什麼? – hrskrs

+0

「http://tempuri.org/IRestaurant/」這是命名空間。我們將此作爲第一參數傳遞給服務調用函數。新的FetchData(LoginActivity.this).execute(「http://tempuri.org/IRestaurant/」,「GetUnits」,「http://10.0.0.2/RestaurantServices/RegistrationServices.svc」); – dreamdeveloper

+0

將其更改爲'tempuri.org'並嘗試它,如果有任何更改? – hrskrs

回答

相關問題