axis2客户端调用问题

saaaer 2014-12-12 05:09:40
我写了个 web service 用来发送短信,代码如下

package com.link.ws;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.tempuri.WS;
import org.tempuri.WSSoap;
/*
* author suncl
* 短信测试类
* date:2014/12/11
*/
public class SnsServer {
private static Log log = LogFactory.getLog(SnsServer.class);
private String corpID = "TEST0xxxx";
private String pwd = "xxxx";
public String PostSns(String mobiles,String content){

// String content = "xxxxxxxxx";
String cell = "";
String sendTime = "";
WS ws = new WS();

WSSoap soap;

soap = (WSSoap) ws.getWSSoap();
//发送短信
String res = soap.batchSend(this.corpID, this.pwd, mobiles, content, cell,
sendTime);
long resLong = Long.parseLong(res);
if (resLong > 0) {
log.info("发送成功,流水号为:" + resLong+",手机号为:"+mobiles+"内容为:"+content);
} else if (resLong == -1) {
log.info("账号未注册" );
} else if (resLong == -2) {
log.info("其他错误");
} else if (resLong == -3) {
log.info("帐号或密码错误");
} else if (resLong == -4) {
log.info("一次提交信息不能超过10000个手机号码,号码逗号隔开" );
} else if (resLong == -5) {
log.info("余额不足,请先充值" );
} else {
log.info("未知错误,错误号为:" + resLong);
}
return res;
}
public static void main(String[] args) {
String mobiles="15531032581";
String content = "xxx";
SnsServer t=new SnsServer();
t.PostSns(mobiles, content);

// 返回短信余额
// String snsBal = soap.selSum(CorpID, Pwd);
// log.info("短信余额为:" + snsBal);

}
}



service.xml

<service name="Sns">
<Description>
Sns poster
</Description>
<parameter name="ServiceClass" locked="false">com.link.ws.SnsServer</parameter>
<operation name="PostSns">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>

因为PostSns有参数,这个xml文件是否需要给这个方法加参数?
客户端调用 webservice

package com.link.client;

import java.net.MalformedURLException;
import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/*
* 短信客户端
* author:suncl
* date:2014/12/12
*/
public class Client {
public static void main(String[] args) throws RemoteException,
ServiceException, MalformedURLException {
String mobiles = "15531032581";
String content = "xxxxxxxxxxxxxx";

String method = "PostSns";
try{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(
"http://localhost:8080/axis2/services/Sns"));
call.setOperationName(new QName("http://ws.link.com", method));
call.setUseSOAPAction(true);
call.addParameter(new QName("http://ws.link.com", "mobiles"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName("http://ws.link.com", "content"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setSOAPActionURI("http://ws.link.com/GetServerList");
String k = (String) call.invoke(new Object[] { mobiles, content }); // 因为返回值是String类型,所以这里调用的返回值也是String类型
System.out.println(">>> " + k); // 返回值输出
}catch(Exception ex){
ex.printStackTrace();
}

}
}



...全文
138 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
saaaer 2014-12-12
  • 打赏
  • 举报
回复
错误提示如下:

2014-12-12 16:42:39,425 WARN [org.apache.axis.utils.JavaUtils] - <Unable to find
 required classes (javax.activation.DataHandler and javax.mail.internet.MimeMult
ipart). Attachment support is disabled.>
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
 faultSubcode: 
 faultString: The Endpoint validation failed to validate due to the following er
rors:  :: Invalid Endpoint Interface ::  :: The operation names in the WSDL port
Type do not match the method names in the SEI or Web service implementation clas
s.  wsdl operations = [Send BatchSend BatchSendX BatchSendMMS GetReportMMS GetMM
S BalanceMMS SelSum Get GetOne GetReportSMS Reg UpdPwd AgentChangeAccount AgentM
akeAccount GetEncrypt GetDecrypt GetKeyWords ] dispatch operations = [GetEncrypt
 SelSum null null Reg GetDecrypt null null BatchSendX GetOne null Send Get UpdPw
d BatchSend AgentMakeAccount GetReportSMS AgentChangeAccount ]
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}stackTrace:The Endpoint validation failed to valid
ate due to the following errors:  :: Invalid Endpoint Interface ::  :: The opera
tion names in the WSDL portType do not match the method names in the SEI or Web 
service implementation class.  wsdl operations = [Send BatchSend BatchSendX Batc
hSendMMS GetReportMMS GetMMS BalanceMMS SelSum Get GetOne GetReportSMS Reg UpdPw
d AgentChangeAccount AgentMakeAccount GetEncrypt GetDecrypt GetKeyWords ] dispat
ch operations = [GetEncrypt SelSum null null Reg GetDecrypt null null BatchSendX
 GetOne null Send Get UpdPwd BatchSend AgentMakeAccount GetReportSMS AgentChange
Account ]
	at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:2
22)
	at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:12
9)
	at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationCo
ntext.java:1087)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Abst
ractSAXParser.java:609)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanE
ndElement(XMLDocumentFragmentScannerImpl.java:1782)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$Fragm
entContentDriver.next(XMLDocumentFragmentScannerImpl.java:2973)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocum
entScannerImpl.java:606)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSD
ocumentScannerImpl.java:117)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanD
ocument(XMLDocumentFragmentScannerImpl.java:510)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Con
figuration.java:848)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Con
figuration.java:777)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:14
1)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractS
AXParser.java:1213)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SA
XParserImpl.java:648)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.ja
va:332)
	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext
.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChe
cker.java:62)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at com.link.client.Client.main(Client.java:39)

	{http://xml.apache.org/axis/}hostname:sun-PC

The Endpoint validation failed to validate due to the following errors:  :: Inva
lid Endpoint Interface ::  :: The operation names in the WSDL portType do not ma
tch the method names in the SEI or Web service implementation class.  wsdl opera
tions = [Send BatchSend BatchSendX BatchSendMMS GetReportMMS GetMMS BalanceMMS S
elSum Get GetOne GetReportSMS Reg UpdPwd AgentChangeAccount AgentMakeAccount Get
Encrypt GetDecrypt GetKeyWords ] dispatch operations = [GetEncrypt SelSum null n
ull Reg GetDecrypt null null BatchSendX GetOne null Send Get UpdPwd BatchSend Ag
entMakeAccount GetReportSMS AgentChangeAccount ]
	at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:2
22)
	at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:12
9)
	at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationCo
ntext.java:1087)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Abst
ractSAXParser.java:609)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanE
ndElement(XMLDocumentFragmentScannerImpl.java:1782)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$Fragm
entContentDriver.next(XMLDocumentFragmentScannerImpl.java:2973)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocum
entScannerImpl.java:606)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSD
ocumentScannerImpl.java:117)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanD
ocument(XMLDocumentFragmentScannerImpl.java:510)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Con
figuration.java:848)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Con
figuration.java:777)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:14
1)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractS
AXParser.java:1213)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SA
XParserImpl.java:648)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.ja
va:332)
	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext
.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChe
cker.java:62)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at com.link.client.Client.main(Client.java:39)

不熟悉axis2,请指正

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧