2014-12-19 69 views
-1

我相信我已经知道这个问题,但我不是100%,所以我只是想让别人放心。我使用PayPal提供的示例代码进行快速检查,但每次运行代码时,它都会使其到达DataOutputStream output = new DataOutputStream(conn.getOutputStream());行,但我总是得到Connection timed out: connect,但显然这不是最具信息性的错误消息,但是我找到了一些问题/答案可能表明我的防火墙阻止了网址(https://api-3t.sandbox.paypal.com/nvp173.0.82.83),或者阻止了端口443。所以我真正想知道的是我是否认为这个错误是由于防火墙问题导致的?如果是的话,我能做些什么来解决这个问题?PayPal HttpURLConnection连接超时问题

以下是正在进行调用的示例代码的一部分。

try { 
    URL postURL = new URL(getExternalURL()); 
    HttpURLConnection conn = (HttpURLConnection)postURL.openConnection(); 

    // Set connection parameters. We need to perform input and output, 
    // so set both as true. 
    conn.setDoInput (true); 
    conn.setDoOutput (true); 

    // Set the content type we are POSTing. We impersonate it as 
    // encoded form data 
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     conn.setRequestProperty("User-Agent", agent); 

    //conn.setRequestProperty("Content-Type", type); 
    conn.setRequestProperty("Content-Length", String.valueOf(encodedPaypalData.length())); 
    conn.setRequestMethod("POST"); 

    // get the output stream to POST to. 
    DataOutputStream output = new DataOutputStream(conn.getOutputStream()); // Connection Times out all the time here. 
    output.writeBytes(encodedPaypalData); 
    output.flush(); 
    output.close(); 

    int rc = conn.getResponseCode(); 

    if (rc != -1) { 
     BufferedReader is = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     String line = null; 
     while (((line = is.readLine()) != null)) { 
      responseText = responseText + line; 
     } 
     nvp = deformatNVP(responseText);    
    } 

} catch (IOException ioe) { 
    ioe.printStackTrace(); 
} 

这是控制台中出现的错误。我也运行在TCP/IP监视器中,我可以看到请求已发送,但它返回500 internal server error

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.BaseSSLSocketImpl.connect(Unknown Source) 
at sun.net.NetworkClient.doConnect(Unknown Source) 
at sun.net.www.http.HttpClient.openServer(Unknown Source) 
at sun.net.www.http.HttpClient.openServer(Unknown Source) 
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) 
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) 
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) 
at uk.co.cdl.webclient.servicefacade.payment.PaypalPaymentService.paypalHttpCall(PaypalPaymentService.java:174) 
at uk.co.cdl.webclient.servicefacade.payment.PaypalPaymentService.registerPaypalExpressCheckoutTransaction(PaypalPaymentService.java:126) 
at uk.co.cdl.webclient.model.paypal.RegisterPaypalPayment.doPost(RegisterPaypalPayment.java:35) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

编辑

我刚才讲了另一个开发商和他有过的理论,它可能是我们代理的是停止它连接。我现在也在调查这一点。

回答

0

您是否尝试过在浏览器中打开此链接,看看happens.I收到此:

ACK=Failure&L_ERRORCODE0=81002&L_SHORTMESSAGE0=Unspecified%20Method&L_LONGMESSAGE0=Method%20Specified%20is%20not%20Supported&L_SEVERITYCODE0=Error 

如果你确定这是一个防火墙的问题,你要问您的网络管理员白名单这个地址。

否则,不建议,但请尝试设置HTTP代理以绕过防火墙。我建议使用HTTPSURLConnection而不是基类。

+0

是的,我有,我得到了类似于你的回应。我刚刚想到另一个理论,我会用我的问题来更新我的问题。 – Popeye 2014-12-19 09:38:14