日期:2014-05-18  浏览次数:20666 次

新人小问题。调用webservice报错了。跪求解决方法 就80分了全送了


刚学java,想调用一个webservice.用的是axis2

代码很简单
public String ValidateLogin(String userName, String passWord)
throws AxisFault {

RPCServiceClient client = new RPCServiceClient();
Options options = client.getOptions();
EndpointReference reference = new EndpointReference(
"http://test.com/login.asmx?WSDL");  //这个wsdl是用.NET写的,很简单。没问题,浏览器能调用
options.setAction("http://tempuri.org/ValidateLogin");
options.setTo(reference);

// 制定参数值  传两个参数过去
Object[] params = new Object[] { userName, passWord };
// 制定方法返回值
Class[] classes = new Class[] { String.class };
// 获取调用方法的命名空间
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");
Object content = client.invokeBlocking(funNamespace, params, classes)[0];  //到这时就不行了 

return content.toString();
}

现在提示
type Exception report

message org.apache.axis2.AxisFault: Connection timed out: connect

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: org.apache.axis2.AxisFault: Connection timed out: connect
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

------解决方案--------------------
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");

这个Namespace不可能是正确的。正确的应该是"http://tempuri.org/"

EndpointReference reference = new EndpointReference("http://test.com/login.asmx?WSDL"); 
看完这个我收回上面的话的后半句,是什么你自己去调试把。
------解决方案--------------------
ie 里面看看 空间 和 wsdl 的具体地址
------解决方案--------------------
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");改为:
QName funNamespace = new QName("http://tempuri.org/",“ValidateLogin”);
------解决方案--------------------
地址 
try {
      String endpoint = "http://www.webxml.com.cn/WebServices/WeatherWS.asmx";
      Service service = new Service();
      Call call;
      call = (Call) service.createCall();
      call.setTargetEndpointAddress(new java.net.URL(endpoint));
      call.setOperationName(new QName("http://WebXml.com.cn/","getWeather"));
    
      call.setReturnClass(java.lang.String[].class);
      call.addParam