axis怎么调用webservice
2017-12-07 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
<span style="font-size:14px;"> public static boolean send(String MsgContent, String DestNumber){
boolean res = false;
try {
// webservice路径
// 这里后面加不加 "?wsdl" 效果都一样的
String endpoint = "http://sms.28inter.com:8080/SmsService/SmsService.asmx";
// 发送短信接口方法名
String operationName = "SendEx";
String targetNamespace = "http://tempuri.org/";
// 定义service对象
Service service = new Service();
// 创建一个call对象
Call call = (Call) service.createCall();
// 设置目标地址,即webservice路径
call.setTargetEndpointAddress(endpoint);
// 设置操作名称,即方法名称
call.setOperationName(new QName(targetNamespace, operationName));
// 设置方法参数
call.addParameter(new QName(targetNamespace, "UserId"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "Password"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "MsgContent"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "DestNumber"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "SendTime"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "SubNumber"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "BatchSendID"),
XMLType.XSD_STRING,
ParameterMode.IN);
call.addParameter(new QName(targetNamespace, "BizType"),
XMLType.XSD_STRING,
ParameterMode.IN); // XMLType.XSD_INT
call.addParameter(new QName(targetNamespace, "WapURL"),
XMLType.XSD_STRING,
ParameterMode.IN);
/**
* 设置返回值类型-由于文档给的是返回一个代理类SendExResp-这个需要用ws工具生成,不然就要手动写,
* 故这里设置成org.w3c.dom.Element.class,不然会报org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected错误。
* 注:具体的返回类型,根据对方提供的ws进行设置即可,如:call.setReturnClass(String[].class);
*/
call.setReturnClass(org.w3c.dom.Element.class);
// 解决错误:服务器未能识别 HTTP 头 SOAPAction 的值
call.setUseSOAPAction(true);
call.setSOAPActionURI(targetNamespace + operationName);
// 调用ws方法
call.invoke(new Object[]{SMS.USERID, SMS.PASSWORD, MsgContent, DestNumber, SMS.SENDTIME, SMS.SUBNUMBER, SMS.BATCHSENDID, SMS.BIZTYPE, SMS.WAPURL});
res = true;
} catch (ServiceException e) {
res = false;
e.printStackTrace();
} catch (RemoteException e) {
res = false;
e.printStackTrace();
}
return res;
}
注:上述WSDL里面描述的参数BIZTYPE是int类型的,但传递参数时要传递字符串类型,否则报如下错误:
服务器无法读取请求。 ---> XML 文档(1, 841)中有错误。 ---> 输入字符串的格式不正确 </span>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询