Paypal的HttpURLConnection连接超时问题

时间:2014-12-19 09:18:15

标签: java paypal httpurlconnection firewall

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

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

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)

修改

我刚刚和另一位开发人员谈过,他的理论是它可能是我们的代理,它阻止了它的连接。我现在正在研究这个问题。

1 个答案:

答案 0 :(得分:0)

您是否尝试在浏览器中打开此链接,看看会发生什么。我收到了:

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

如果您确定这是防火墙问题,则需要请求您的网络管理员将此地址列入白名单。

否则,不推荐使用,尝试设置HTTP代理以绕过防火墙。

我还建议使用HTTPSURLConnection而不是基类。