【问题标题】:Timeout exception with salesforce.com Java SOAP API example code from 'getting started'“入门”中 salesforce.com Java SOAP API 示例代码的超时异常
【发布时间】:2023-03-11 23:57:01
【问题描述】:

我浏览了来自 salesforce SOAP API quick start 的示例代码,但我得到的只是第一次登录阶段的超时错误。我创建了一个开发人员登录并生成了 wsdl,然后是 .jar。程序编译。我目前正在尝试使用我在其他地方找到的以下示例:

import com.sforce.soap.enterprise.Connector;
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;

public class Main {
    static final String USERNAME = "username redacted";
    static final String PASSWORD = "password redacted";
    static final String AUTH = "https://login.salesforce.com/services/Soap/c/37.0/0DF58000000L2Vm";
    static EnterpriseConnection connection;

    public static void main(String[] args) {
        ConnectorConfig config = new ConnectorConfig();
        config.setUsername(USERNAME);
        config.setPassword(PASSWORD);
        config.setAuthEndpoint(AUTH);
        try {
            connection = Connector.newConnection(config);
            // display some current settings
            System.out.println("Auth EndPoint:"+config.getAuthEndpoint());
            System.out.println("Service EndPoint:"+config.getServiceEndpoint());
            System.out.println("Username: "+config.getUsername());
            System.out.println("SessionId: "+config.getSessionId());
        } catch (ConnectionException e1) {
            e1.printStackTrace();
        }
   }
}

但是当我运行它时,它会挂起很长时间,然后给出一个 ConnectException: Connection timed out

com.sforce.ws.ConnectionException: Failed to send request to https://login.salesforce.com/services/Soap/c/37.0/0DF58000000L2Vm
    at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:121)
    at com.sforce.soap.enterprise.EnterpriseConnection.login(EnterpriseConnection.java:1207)
    at com.sforce.soap.enterprise.EnterpriseConnection.<init>(EnterpriseConnection.java:386)
    at com.sforce.soap.enterprise.Connector.newConnection(Connector.java:27)
    at Main.main(Main.java:18)
Caused by: java.net.ConnectException: Connection timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:637)
    at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:977)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1093)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.sforce.ws.transport.JdkHttpTransport.connectRaw(JdkHttpTransport.java:136)
    at com.sforce.ws.transport.JdkHttpTransport.connectLocal(JdkHttpTransport.java:100)
    at com.sforce.ws.transport.JdkHttpTransport.connectLocal(JdkHttpTransport.java:95)
    at com.sforce.ws.transport.JdkHttpTransport.connect(JdkHttpTransport.java:91)
    at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:95)
    ... 4 more

我已经使用 wireshark 和我的系统管理员检查过它不是防火墙:DNS 查找正确解析了“login.salesforce.com”,并且肯定有包出去了。我还能做错什么?

【问题讨论】:

  • 您确定这是有效的网址吗?尝试ping ip。 (使用nslook up)获取ip
  • @Optimuskck 通过正确解析我的意思是,如果我在网络浏览器中输入 DNS 返回的 ip(我可以在 wireshark 中看到),它会正确地将我带到“login.salesforce.com”
  • 通常这是因为您的网络配置为必须使用代理服务器进行出站连接

标签: java soap salesforce


【解决方案1】:

如果你使用jdk 1.7,你可以尝试在运行jar时使用-Dhttps.protocols=TLSv1.1,TLSv1.2

Jdk 1.8 与 TLSv1.1、TLSv1.2 兼容,因此您也可以使用它

我遇到了同样的问题,我通过传递 https 协议解决了它。

让我知道这是否对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多