android ksoap2 呼叫WebService和WCF服務的區別
阿新 • • 發佈:2018-12-03
- 如何區分服務是webservice服務和wcf服務
webservice服務網址是以.asmx結尾的,例子:http://ip地址/Interface/MapService.asmx?wsdl
wcf服務是以.svc結尾的,例子:http://ip地址/ydyzt/ReadXml.svc?wsdl - 使用ksoap2呼叫兩個服務基本相同,唯一需要注意的是:soapAction
webservice的soapAciton = nameSpace+methodName
而wcf的soapAction不等於nameSpace+methodName
例子:webservice服務中
String nameSpace = “
String methodName = “RetDatePrjinfo”;
String soapAction = “http://tempuri.org/RetDatePrjinfo”;
在wcf服務中
String nameSpace = “http://tempuri.org/”;
String methodName = “DoWork”;
String soapAction = “http://tempuri.org” + “/IService” + “/DoWork”;
其中IService需要去(網址?wsdl例如:http://192.88.223.169/ydyzt/ReadXml.svc?wsdl)中找
下面是使用ksoap2請求wcf服務(不含請求引數)的程式碼,根據實際情況修改nameSpace,methodName 和soapAction,根據實際情況新增請求引數
String nameSpace = "http://tempuri.org/"; String methodName = "DoWork"; String soapAction = "http://tempuri.org" + "/IService" + "/DoWork"; String url = "http://192.88.223.169/ydyzt/ReadXml.svc?wsdl"; SoapObject request = new SoapObject(nameSpace, methodName); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); envelope.bodyOut = request; try { HttpTransportSE transportSE = new HttpTransportSE(url); transportSE.call(soapAction, envelope); SoapObject bodyIn = (SoapObject) envelope.bodyIn; String property = bodyIn.getProperty(0).toString(); // Log.e("獲取到資料", property); return property; } catch (Exception e) { e.printStackTrace(); }
使用ksoap2請求webservice服務(含請求引數)的程式碼,根據實際情況修改nameSpace,methodName 和soapAction,根據實際情況新增請求引數
String uploadUrl = "http://117.17.18.120:6061/PublicInterface/MapService.asmx?WSDL";
String uploadNameSpace = "http://tempuri.org/";
String uploadMethodName = "UploadProjectFileInfo "; //
String uploadSoapAction = "http://tempuri.org/UploadProjectFileInfo";
SoapObject request = new SoapObject(uploadNameSpace, uploadMethodName);
request.addProperty("strUploadUserName", "");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
envelope.bodyOut = request;
try {
HttpTransportSE transportSE = new HttpTransportSE(uploadUrl);
new MarshalBase64().register(envelope);
transportSE.call(uploadSoapAction, envelope);
Object response = envelope.getResponse();
SoapObject bodyIn = (SoapObject) envelope.bodyIn;
String property = bodyIn.getProperty(0).toString();
return property;
} catch (Exception e) {
e.printStackTrace();
return e.toString();
}