java通过ksoap2实现访问C#写的WebService(基于soap协议)接口
- 背景
- 代码实现
背景
在一个大型平台项目中,经常会有多个团队协作开发,而不同的团队所使用的开发语言和开发技术也不尽相同,本文就介绍一下如何在java中访问C#写的WebService(基于soap协议)接口,很长用的场景就是Android手持系统访问WebService接口。
说明:本代码依赖的jar包如下:
ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar
代码实现
package com.soap.client.test;import org.junit.Test;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;public class SoapClientTester {private final String MYURL = "http://172.16.12.23:9003/CuringWebService/CuringAppService";private final String NAMESPACE = "http://curing.mesnac.com";private final String METHODNAME = "getClassNames";public SoapClientTester() {}@Testpublic void TestCall(){try {SoapObject request = new SoapObject(NAMESPACE,METHODNAME);// request.addProperty("name", accountet.getText().toString()); //为接口方法传参
// request.addProperty("arg0", "{\"function\":\"getInStoreBill\",\"request\":{\"billNo\":\"20190310011001\",\"date\":\"2019-03-10\",\"shift\":\"123\"}}");SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = request;envelope.dotNet = true;envelope.setOutputSoapObject(request);HttpTransportSE ht = new HttpTransportSE(MYURL);ht.call(NAMESPACE+METHODNAME, envelope); //接口调用//返回对象应为Object 否则会出现转换异常错误Object soapObject = (Object) envelope.getResponse();System.out.println(soapObject.toString());//后面的代码就是对soapObject.toString()的内容进行解析,这就是接口方法的返回值}catch (Exception e) {e.printStackTrace();}}
}