新人小疑点。调用webservice报错了。跪求解决办法 就80分了全送了

新人小问题。调用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.addParameter(new QName("http://WebXml.com.cn/", "theCityCode"),
      org.apache.axis.encoding.XMLType.XSD_STRING,
      javax.xml.rpc.ParameterMode.IN);
      call.addParameter(new QName("http://WebXml.com.cn/", "theUserID"),
      org.apache.axis.encoding.XMLType.XSD_STRING,
      javax.xml.rpc.ParameterMode.IN);
    
      call.setUseSOAPAction(true);
      call.setSOAPActionURI("http://WebXml.com.cn/getWeather");
      String[] results = (String[]) call.invoke(new Object[] { "", "" });
      if (null != results) {
      for (int i = 0; i < results.length; i++) {
      System.out.println(results[i]);
      }
      }
    
    
      } catch (Exception e) {
      e.printStackTrace();
      }

------解决方案--------------------
亲,直接用Eclipse自动生成客户端代码进行测试。
------解决方案--------------------


public class AxisClient {

public static void main(String[] args) throws Exception {

String targetEndPoint = "http://localhost:8080/Asix2Demo/services/HelloWorld";
Service ser = new Service();
try {
Call call = (Call) ser.createCall();
call.setTargetEndpointAddress(targetEndPoint);
call.setOperationName(new QName(targetEndPoint, "hello" ));
call.setOperation("hello");
String result = (String) call.invoke(new Object[] { new String("test") });