Java调用WebService之Axis实现
发布日期:2021-05-09 04:57:53 浏览次数:9 分类:博客文章

本文共 3912 字,大约阅读时间需要 13 分钟。

import org.apache.axis.client.Call;import org.apache.axis.client.Service;/** * @ClassName: TestAxis * @Description: TODO(描述这个类的作用) * @author huc*  */ public class TestAxis {    public static void main(String []args){        String inConditions = "
*
公民身份号码
姓名
110101******
李闻
100600
个人贷款
3624221952123***
李一闻
100600
个人贷款
1234********
王龙
100600
银行开户
110101******
100600
个人车贷
110101******
100600
230602***
100600
个人车贷
"; String inLicense = "********"; try{ //调用webservice地址 String url = "https://www.****.com/services/NciicServices";           //如果url地址中有中文参数,要注意应单独将中文部分进行编码操作后再与URL字符串拼接到一起,编码方式为:URLEncoder.encode("中文部分", "utf-8"); //调用方法名 String method="nciicCheck"; Service service = new Service(); //通过service创建call对象 Call call = (Call) service.createCall();           //call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS); 设置soap12协议方式调用 //设置服务地址 call.setTargetEndpointAddress(new java.net.URL(url)); //设置调用方法 call.setOperationName(method); call.setUseSOAPAction(true); //添加方法的参数,有几个添加几个 //inLicense是参数名,XSD_STRING是参数类型,IN代表传入 call.addParameter("inLicense", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN); call.addParameter("inConditions", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);

          //带命名空间的写法        

          //call.setOperationName(new QName("http://bussiness.***.com", "callPT"));

          //call.addParameter(new QName("http://bussiness.***.com","xmlData"),org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
          //call.addParameter(new QName("http://bussiness.***.com","methodName"),org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);

          //设置返回类型                  call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);           //解决错误:服务器未能识别 HTTP 头 SOAPAction 的值            call.setUseSOAPAction(true);           call.setSOAPActionURI(targetNamespace + operationName);
Object ret= null;                try{                    //使用invoke调用方法,Object数据放传入的参数值                    ret = call.invoke(new Object[] {inLicense,inConditions});                  }catch(Exception e){                    e.printStackTrace();                }                //输出SOAP请求报文                System.out.println("--SOAP Request: " + call.getMessageContext().getRequestMessage().getSOAPPartAsString());                //输出SOAP返回报文                System.out.println("--SOAP Response: " + call.getResponseMessage().getSOAPPartAsString());                //输出返回信息                System.out.println("result==="+ret.toString());         }catch(Exception e){        e.printStackTrace();        }    }   }

下面是输出结果信息:

--SOAP Request: 
*****
*****
--SOAP Response:
<?xml version="1.0" encoding="UTF-8"?><RESPONSE errorcode="-72" code="0" countrows="1"><ROWS><ROW><ErrorCode>-72</ErrorCode><ErrorMsg>IP地址受限</ErrorMsg></ROW></ROWS></RESPONSE>
result===
-72
IP地址受限

 

上一篇:Mybatis笔记二
下一篇:Stax解析XML示例代码

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月04日 17时29分20秒