1

我有简单的网络服务:

我也有同样的问题。当我不附加“?wsdl”时,我有肥皂法。我怎样才能避免这个异常?

@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
    @WebMethod
    @WebResult(partName = "time_response")
    String getTimeAsString();

    @WebMethod
    @WebResult(partName = "time_response")
    long getTimeAsElapsed();

}

并暗示:

@WebService(endpointInterface = "x.y.z.TimeServer")
public class TimeServiceImpl implements TimeServer {


    public TimeServiceImpl() {}

    @Override
    public String getTimeAsString() {return new Date().toString();}

    @Override
    public long getTimeAsElapsed() {return new Date().getTime();}

}

我在 Jboss As 7.0.1 中运行这个 Web 服务。 一切正常!

当我打开链接localhost:8080/project/time?wsdl 一切正常 -我有 wsdl。

但是当我不附加“?wsdl”时,我有例外。

14:26:58,192 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (http-localhost-127.0.0.1-8080-1) Interceptor for {http://x.z.y/}HelloWorld has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: No such operation: null (HTTP GET PATH_INFO: /project/timenull)
at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:88)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)

我从服务器收到了这个回复:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>
     No such operation: null (HTTP GET PATH_INFO: /soap-service/timenull)
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>

我怎样才能避免这个异常?

如果客户端会看到另一条消息而不是这个错误响应,那会更好吗?当客户端打开没有“?wsdl”的链接时,如何发送另一个 XML?

感恩

4

2 回答 2

2

Web 服务不支持 HTTP GET。如果您输入服务 url,它会直接生成一个 HTTP GET。这就是它响应错误的原因No such operation

相反,您需要进行 SOAP POST 以从 web 服务获取响应。为此编写一个 Web 服务客户端。您可以参考此链接来创建 Web 服务客户端

于 2014-06-26T11:06:38.107 回答
0

@grep 我认为这篇文章有点老了,但如果有类似问题的其他人能够回答,我仍然会尝试回答。好吧,我有同样的问题,想知道这些背后的原因是什么。这是我尝试并解决问题的两个步骤。确保您能够在浏览器中访问 wsdl。

  1. 关闭 SOAPUI,删除 C:/users 下的 user 文件夹中创建的 soapui_workspace.xml。
  2. 重新启动 Soap_ui 并打开首选项>代理设置。
  3. 从自动更改为无。
  4. 创建新项目。这确实解决了我的问题并从 SOAPUI 中的 web 服务获得了响应。

    其次,在这种情况下,请确保您已按照@Dinal 的说明正确部署了 Web 服务。

于 2015-01-21T05:47:13.993 回答