1.引入坐标
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
2.工具类
/**
* 通过HttpClient获取asmx接口
*
* @param url "http://xxxx:xxxx/WebServiceGzt.asmx/GetLogin"
* @param data NameValuePair[] data ={
* new NameValuePair("UserName", "xxxx"),
* new NameValuePair("PassWord", "xxxx"),
* };
* @return {@link JSONObject}
*/
public static JSONObject getWebServiceAsmxJSON(String url, NameValuePair[] data) {
HttpClient httpClient = new HttpClient();
//接口地址。后面的TestMethod表示方法名
PostMethod postMethod = new PostMethod(url);
//编码设为UTF-8
postMethod.getParams().setParameter(
HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
postMethod.setRequestBody(data);
//调用webservice,返回statuscode。200表示成功。
int statusCode = 0;
JSONObject jsonStr = null;
try {
statusCode = httpClient.executeMethod(postMethod);
//返回的Response文本。
if (statusCode == 200) {
String soapRequestData = postMethod.getResponseBodyAsString();
jsonStr = JSON.parseObject(soapRequestData);
}
} catch (IOException e) {
e.printStackTrace();
}
return jsonStr;
}
/**
* webService 请求方法 .asmx
* @param url webservice地址
* @param operationName 方法名
* @param para 查询条件
* @return
*/
public static String sendWebservice(String url,String operationName,Map<String,Object> para) {
//查询条件的value值
List<String> param = new ArrayList<>();
// 域名,这是在server定义的
String soapaction = "http://tempuri.org/";
Service service = new Service();
String ret = "";
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
// 设置要调用哪个方法
call.setOperationName(new QName(soapaction, operationName));
if(para.size()>0){
//迭代Map
Iterator<Map.Entry<String, Object>> it = para.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, Object> entry = it.next();
//得到需要传的参数
call.addParameter(new QName(soapaction, entry.getKey()), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//得到map的所有value
param.add((String) entry.getValue());
}
}
//(标准的类型)
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapaction + operationName);
//转value转成数组
String[] strArray = new String[0];
if(param.size()>0){
strArray = param.toArray(new String[param.size()]);
}
// 调用方法并传递参数
ret = (String) call.invoke(strArray);
} catch (Exception ex) {
ex.printStackTrace();
}
return ret;
}
/**
* webService 请求方法 wsdl
* @param nameSpace 命名空间
* @param url webservice地址
* @param operationName 方法名
* @param para 查询条件
* @return
*/
public static String sendWebservice(String nameSpace,String url,String operationName,Map<String,Object> para) {
//查询条件的value值
List<String> param = new ArrayList<>();
Service service = new Service();
String ret = "";
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
// 设置要调用哪个方法
call.setOperationName(new QName(nameSpace, operationName));
if(para.size()>0){
//迭代Map
Iterator<Map.Entry<String, Object>> it = para.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, Object> entry = it.next();
//得到需要传的参数
call.addParameter(entry.getKey(), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//得到map的所有value
param.add((String) entry.getValue());
}
}
//(标准的类型)
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
//转value转成数组
String[] strArray = new String[0];
if(param.size()>0){
strArray = param.toArray(new String[param.size()]);
}
// 调用方法并传递参数
ret = (String) call.invoke(strArray);
} catch (Exception ex) {
ex.printStackTrace();
}
return ret;
}
3 针对需要带header参数的可以参考地址
点击该地址