有一个webservice地址,可以通过IE访问到wsdl定义,没有用户名和密码作为安全验证,我用xfire作为客户端请求时报错,各位帮忙看看能不能找出什么问题[INFO] 2012-08-20 11:10:27 200 - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect
[INFO] 2012-08-20 11:10:27 215 - Retrying request
[INFO] 2012-08-20 11:10:48 232 - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect
[INFO] 2012-08-20 11:10:48 232 - Retrying request
[INFO] 2012-08-20 11:11:09 249 - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect
[INFO] 2012-08-20 11:11:09 249 - Retrying request
[ERROR] 2012-08-20 11:11:30 173 - java.net.ConnectException: Connection timed out: connect
Exception in thread "main" org.codehaus.xfire.fault.XFireFault: Couldn't send message.
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:30)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
at util.WebServiceUtil.execute(WebServiceUtil.java:14)
at com.catt.webService.client.XFireClientTest.main(XFireClientTest.java:121)
Caused by: org.codehaus.xfire.XFireException: Couldn't send message.
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:145)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
... 7 more
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.send(CommonsHttpMessageSender.java:369)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:123)
... 9 more 
 
 

解决方案 »

  1.   

    看错误是连接超时,请检查webservice的地址也有可能wsdl地址去掉wsdl后不是真正的webservice调用地址可能 呵呵
      

  2.   


    后台的同事使用的 axis2 能请求,不知道xfire什么原因。。
    前台改webservice请求方式又会麻烦。。
      

  3.   

    可能是其它原因造成的,前提你的xfire客户端没问题
      

  4.   

    如果在浏览器访问的地址是:
    http://192.168.1.73:8080/flow/services?wsdl
    那么在程序中使用的地址应该是:
    http://192.168.1.73:8080/flow/services这两个地址是有区别的
      

  5.   

    上次用xfire生成客户端,访问webservice 不行。类是的错
    我后来用axis 生成客户端,就可以了
      

  6.   

    如果在浏览器访问的地址是:
    http://外网域名/flow/services?wsdl
    那么在程序中使用的地址应该是:
    http://会动改成内网ip/flow/services
    如果改为http://外网域名/flow/services?wsdl 仍然有错  请教怎么访问外网
      

  7.   


    xfire 我不知道能否设置命名空间,这个问题当时是发布服务的这台机器有些不一样。
    用IE打开wsdl服务地址,下方endpoint地址跟服务地址不一样,所以要指定命名空间。
    后来是换用axis2客户端调用了,这个可以设置命名空间,命名空间是wsdl中,第一个节点里的 targetNamespace 的值