packagecom.xx.wcftest;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;importorg.ksoap2.SoapEnvelope;importorg.ksoap2.serialization.SoapObject;importorg.ksoap2.serialization.SoapSerializationEnvelope;importorg.ksoap2.transport.HttpTransportSE;/*** 调用wcf服务类
*@authorawei
**/
public classSoapService {/*** wcf服务命名空间*/
protected String NameSpace = "http://xxx.com/";//可从配置文件读取
/*** wcf 服务地址*/
protected String URL = "http://localhost:90/";//可从配置文件读取
/*** wcf soap 方法执行地址,可从wsdl中获取*/
protectedString SOAP_ACTION;/*** 功能名称*/
protectedString MethodName;/*** 构造器初始化参数
*@paramsvc 服务寄宿文件名称 如:Hello.svc
*@paramServiceInterface 服务接口名称 如:IHello*/
publicSoapService(String svc,String ServiceInterface)
{this.URL +=svc;this.SOAP_ACTION = this.NameSpace + ServiceInterface + "/";
}/*** 调用wcf方法返回结果
*@parammethod 要调用的方法名称
*@parammap 要调用的方法参数字典
*@return
*/
public SoapObject LoadResult(String method,Mapmap) {this.MethodName =method;
SoapObject soapObject= newSoapObject(NameSpace, MethodName);if(map != null && map.size() != 0){
Iterator> iter =map.entrySet().iterator();while(iter.hasNext()) {
Map.Entry entry =iter.next();
soapObject.addProperty(entry.getKey().toString(),entry.getValue());
}
}
SoapSerializationEnvelope envelope= new SoapSerializationEnvelope(SoapEnvelope.VER11); //版本
envelope.bodyOut =soapObject;
envelope.dotNet= true;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE trans= newHttpTransportSE(URL);
trans.debug= true; //使用调试功能
try{
trans.call(SOAP_ACTION+ this.MethodName, envelope);
System.out.println("Call Successful!");
}catch(Exception e) {
System.out.println("IOException");
e.printStackTrace();
}
SoapObject result=(SoapObject) envelope.bodyIn;returnresult;
}
}