关于axis2调用webservices出现错误:org.apache.axis2.AxisFault: 服务器无法处理请求。 ---> 未将对象引用设置到对象

javaFay
企业官方账号
2013-01-08 09:58:34
我这边是java项目,调用外部系统(C#)的webservices接口,但是出现以下错误:
Exception in thread "main" org.apache.axis2.AxisFault: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at com.gzedu.lms.studyHourReport.CheckSingleSignOn.sendToServiceByWebService(CheckSingleSignOn.java:84)
at com.gzedu.lms.studyHourReport.CheckSingleSignOn.main(CheckSingleSignOn.java:135)

但是调用网上开放的webservice接口没有问题! 具体代码如下:

import java.util.HashMap;
import java.util.Map;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.transport.http.HTTPConstants;

import com.gzdec.common.config.AppConfig;
import com.gzdec.common.config.AppConfigException;

public class CheckSingleSignOn {

// 接口命名空间名
private String omNameSpace;
// 接口方法名
private String methodName;
// 接口WebService地址
private EndpointReference targetEPR ;
// 接口SOAPAction
private String action ;

public CheckSingleSignOn(){
try {
targetEPR=new EndpointReference(AppConfig.getProperty("provinceSysUrl"));
omNameSpace=AppConfig.getProperty("provinceSysNameSpace");
action="http://tempuri.org/ImportData";
methodName="ImportData";
} catch (AppConfigException e) {
e.printStackTrace();
}
}

/**
* 使用token返回的paramter访问webservice
* @param formMap
* @return
* @throws Exception
*/
public String sendToServiceByWebService(Map formMap) throws Exception {
/*String parseMessage=getAPIAttribute(formMap);
if(!parseMessage.equals(""))
return parseMessage;*/
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(omNameSpace, "");

// 请求参数设置
Options options = new Options();
options.setTo(targetEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);// 设定传输协议
options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);// 设定SOAP版本soap1.2
options.setTimeOutInMilliSeconds(600000L);//1分钟超时
options.setAction(action);
options.setProperty(HTTPConstants.CHUNKED, "false");//设置不受限制.

// 客户端绑定参数设置
ServiceClient sender = null;
sender = new ServiceClient();
sender.setOptions(buildOptions());

// 设定访问的接口方法
OMElement method = fac.createOMElement(methodName, omNs);// 要调用的接口方法名称
OMElement sysId = fac.createOMElement("SystemID", omNs);// 方法的第一个参数名称
OMElement password = fac.createOMElement("SystemPwd", omNs);// 方法的第二个参数名称
OMElement data = fac.createOMElement("Data", omNs);// 方法的第三个参数名称
sysId.addChild(fac.createOMText(sysId, "71D05F8D-E74A-4E53-9265-9BF0D14C7C64"));// 设定参数的值
method.addChild(sysId);
password.addChild(fac.createOMText(password, "597sTmD53"));// 设定参数的值
method.addChild(password);
PottingXmlData p = new PottingXmlData();
data.addChild(fac.createOMText(data, AESWithJCE.Encrypto(p.pottingCheckUserData(formMap))));// 设定参数的值
method.addChild(data);

// 设定其他方法参数,针对参数是数组的情况如何处理?可以考虑为参数添加child,
OMElement result = sender.sendReceive(method);// 调用接口方法
String msg = result.toString();
sender.cleanupTransport();//关闭资源
sender.cleanup();
sender = null;
return isUserLogin(msg,formMap);
}

public String isUserLogin(String msg, Map formMap) {
if(msg.equals("")){
return "未返回参数!";
}else{
return msg;
}

}

/**
* @see 设置连接属性
* @return
*/
public Options buildOptions(){
Options options = new Options();
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
options.setAction(action);
options.setTo(targetEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setProperty(HTTPConstants.CHUNKED, "false");//设置不受限制.
options.setProperty(Constants.Configuration.HTTP_METHOD,HTTPConstants.HTTP_METHOD_POST);
options.setAction(action);
return options;

}






/**
* 测试
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
CheckSingleSignOn util = new CheckSingleSignOn();
Map map = new HashMap();
map.put("USER_ID", "123456789");
map.put("REALNAME", "测试");
map.put("PAPERS_NUMBER", "441301119890001546");
String result = util.sendToServiceByWebService(map);
System.out.println("toString====" + result);

}
}

SystemID,SystemPwd,Data 这3个参数是这个接口所需的
AESWithJCE.Encrypto(p.pottingCheckUserData(formMap))) 返回的是一个加密后的字符串(因接口方法需要加密传输数据)
传上所调用接口的wsdl内容截图,大家帮忙看看我是不是哪里设置错了,问题折腾我几天了,百度谷歌都试过了,无尽感激!
...全文
4025 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsq3175 2013-03-05
  • 打赏
  • 举报
回复
错误信息不太一样: Exception in thread "main" org.apache.axis2.AxisFault: Connection refused: connect at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:197) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531) at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102) at client.RPCClient2.main(RPCClient2.java:47) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:519) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140) at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125) at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193) ... 11 more
lsq3175 2013-03-05
  • 打赏
  • 举报
回复 1
我也遇到类似的问题了,在自己本机是好的,但移到服务器就报跟你一样的错,请问具体是原因引起的,不胜感激
91数据恢复 2013-01-14
  • 打赏
  • 举报
回复
已经解决了! 是对方的服务器代码问题!
91数据恢复 2013-01-08
  • 打赏
  • 举报
回复

补图!

81,122

社区成员

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

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