【问题标题】:Implement Cvent WSDL in Java在 Java 中实现 Cvent WSDL
【发布时间】:2018-07-06 20:26:21
【问题描述】:

我目前正在尝试用 Java 实现 CVENT WSDL -

我正在使用 Eclipse -

我已经使用给定的 WSDL 地址创建了一个 WebService 客户端,并让它利用 Axis 自动生成代码。 (尝试删除捕获)

   V200611Locator locator = new V200611Locator(); 
   V200611Soap binding = locator.getV200611Soap();
   V200611SoapStub stub = (V200611SoapStub) binding;
   LoginResult lr = stub.login("Account", "User", "Password");

从那里简单地尝试存根给我一个连接错误。

AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.net.ConnectException: Connection timed out: connect faultActor: faultNode: faultDetail:

      {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection timed out: connect
   at java.net.DualStackPlainSocketImpl.connect0(Native Method)
   at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
   at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
   at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
   at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
   at java.net.PlainSocketImpl.connect(Unknown Source)
   at java.net.SocksSocketImpl.connect(Unknown Source)
   at java.net.Socket.connect(Unknown Source)
   at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
   at sun.security.ssl.SSLSocketImpl.<init>(Unknown Source)
   at sun.security.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
   at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92)
   at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
   at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
   at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)
   at org.apache.axis.client.Call.invoke(Call.java:1812)
   at com.cvent.api._2006_11.V200611SoapStub.login(V200611SoapStub.java:3621)
   at wsdlTest.main(wsdlTest.java:46)

   {http://xml.apache.org/axis/}hostname:COMPUTERNAME

对于这个连接异常,我已经尝试在存根上扩展超时值

stub.setTimeout(600000);

还有修改

System.setProperty。 // 修改运行参数

我知道我可以访问 WSDL(通过 IP 白名单),因为我可以访问它/进行 Powershell 调用

Cvent developer notes

【问题讨论】:

  • 我先给 Axis 一个机会。根据axis.apache.org/axis,上次更新是 12 年前。用 CXF 试试看是否有效。
  • @Namphibian - 我也尝试使用 CXF - 但是这是一个安全问题,我仍然把头撞在墙上。感谢您的建议,因为您对轴的年龄完全正确。

标签: java ssl soap wsdl


【解决方案1】:

这个问题花了很长时间才弄清楚 - 安全设置阻止我访问 Window->Preferences->General->Network Connection 中的 WSDL 和代理设置用于 Eclipse 应用程序(我猜)。要建立连接,我必须在应用程序中手动设置代理设置。

System.setProperty("http.proxyHost",host);
System.setProperty("http.proxyPort",port);

这个问题是重复的 - Web Service Client - Construction Failing Due To Timeout (Proxy Issue)

对我来说,Web 服务实际上构建得很好——存根方法会超时。

如果你有类似的问题 -

尝试从您的网络浏览器访问 WSDL - 如果您可以访问它,请进入您的高级网络设置以获取 HOST 和 PORT 代理设置。

如果您无法从 Web 浏览器访问它,那么您可能遇到了防火墙问题(您可能需要 Cvent 将您的 IP 列入白名单)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多