我已經成功編寫了一個使用Ksoap2調用asp.net web服務的Android應用程序。我現在想要遷移應用程序以使用PHP Web服務。我已經成功將Web服務遷移到本地PHP Web服務(並使用PHP客戶端對其進行了測試),但我無法使用KSOAP調用它。一個讓我感到震驚的是,本地PHP Web服務不是使用wsdl生成的,並且無法自動生成wsdl。 ksoap2是否需要wsdl才能成功調用Web服務方法?Ksoap2是否要求Web服務生成wsdl?
的asp.net web服務位於http://mycomputer/AlumLocateService/Service.asmx
對於成功的調用asp.net服務:
private static final String NAMESPACE = "http://mycomputer/";
private static final String URL = "http://mycomputer/AlumLocateService/Service.asmx";
private static final String METHOD_NAME_3 = "FindCloseDetails";
private static final String SOAP_ACTION_3 = NAMESPACE + METHOD_NAME_3;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_3);
PropertyInfo pi = new PropertyInfo();
pi.setName("userid");
pi.setValue(userid);
pi.setType(string.class);
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION_3, envelope);
//Parse Response
Object myResult = envelope.bodyIn;
SoapObject resultsRequestSOAP = (SoapObject) myResult;
String[] results = getStringArrayResponse(resultsRequestSOAP, null);
return results;
PHP服務位於http://mycomputer/PHPTest/testserver.php和複製ASP的方法。網絡服務。我曾希望thta所有我woudl需要做的是改變以下
private static final String URL = "http://mycomputer/PHPTest/testserver.php";
和刪除行
envelope.dotNet = true;
但是當我做,我得到「XmlPullParserException:意外的類型(位置END_DOCUMENT空......」當androidHttpTransport.call(SOAP_ACTION_3,信封)調用時
可以使用KSOAP2給出用於調用PHP web服務的代碼 – jennifer
ok,添加了代碼 –
我現在使用Zend_Soap_Server而不是本地SoapServer實現了我的PHP服務。 Zend_Soap_Server能夠自動生成WSDL。 –