Java调用WebService2
import org.apache.axis.client.Call;
import javax.xml.namespace.QName;
import java.util.*;
/**
-
@author :xzr
-
@version :1.0.0
-
@date :2020/3/23
-
@description :WebService
/
public class WebServiceUtils {
/*- webService链接地址
*/
static String url = “http://172.20.32.132:8696/WebService_IIS.asmx”;
/**
- 域名,这是在server定义的–不知道的可以问接口提供方,他们一并提供这个
*/
static String soapaction = “http://tempuri.org/”;
/**
-
获取WebService数据
*/
public static String getData(String methodName, Map<String, String> params) throws Exception {
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
String websrvmethod = methodName;
// 设置要调用哪个方法
call.setOperationName(new QName(soapaction, websrvmethod));// 用于存储参数的集合
ArrayList myValues = new ArrayList<>();
// 设置要传递的参数名
params.forEach((key, value) -> {
call.addParameter(new QName(soapaction, key), org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
// 将map参数存入集合 call.invoke请求需使用
myValues.add(value);
});call.setReturnType(new QName(soapaction, websrvmethod), String.class);
// 要返回的数据类型(自定义类型,我这边接口提供方给我返回的是json字符串,所以我用string类型接收。这个地方一定要设置好,不然各种报错很崩溃)
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapaction + websrvmethod);
// 调用方法并传递参数-传递的参数和设置的参数要对应,顺序不能搞错了
String data = (String) call.invoke(myValues.toArray(new String[params.size()]));
return data;
}
public static void main(String[] args) throws Exception {
HashMap<String, String> params = new HashMap<>();
params.put(“p_brand_id”,“jsw”);
params.put(“p_year_id”,“2016”);
params.put(“p_sea_id”,“62”);
String v = WebServiceUtils.getData(“WmsSrv_Qry_ItemInfo”,params);System.out.println(v);
- webService链接地址
/* JSONArray json = JSONArray.fromObject(v);
List list = (List) JSONArray.toCollection(json, WmsIteminfo.class);
list.forEach(System.out::println);
System.out.println(list.size());*/
}
}