簡體   English   中英

通過代理在Android 2.3 HTTPS調用中SSL斷開的PIPE

[英]SSL Broken PIPE in Android 2.3 HTTPS call over a Proxy

我遍歷了所有相關的帖子,我試圖找到最底層的內容,而且還不明確-希望有人可以讓我擺脫困境。

我正在嘗試使Android 2.3通過代理通過HTTPS進行POST。 此代碼可通過代理在2.2上完美運行,而在不通過代理的情況下使用HTTPS可在2.2和2.3上完美運行,並且在所有情況下(2.2和2.3),我都可以通過代理通過HTTPS進行獲取。 通過代理使用HTTPS的2.3 POST似乎是問題所在。 我收到了可怕的“斷管”錯誤。 當我嘗試從連接中讀取inputstream響應時,拋出該錯誤-可能是因為TCP套接字已在我的流下方關閉。 我已經嘗試了所有可以想到的方法,包括使用Connection和Proxy-connection標頭(設置為close和keep-alive)以及設置較大的readTimeout數字(30秒)。 通過不懈的谷歌搜索,我可以看到Android 2.3上存在SSL的已知問題,但是我似乎找不到任何跡象表明POST可能是一個問題。 Wireshark已經產生了一些結果,但是鑒於此問題有些棘手,因此使用SSL。

有沒有人看起來如此。 我正在使用HttpsURLConnection,因為各種帖子都表明這比AndroidHttpClient更穩定。 這是我的代碼……任何幫助都是無價的。 謝謝

urlConnection.setSSLSocketFactory(factory);     
urlConnection.setHostnameVerifier(new AllowAllHostnameVerifier() );

String dateText = "{\"loopParam\":\"" + String.valueOf(d.getHours()) + ":" +   String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds())  + "\"}";
                txtOutput.setText("Sending " +     String.valueOf(dateText.length() ) + " bytes of JSON to /pulse/loop" );

urlConnection.addRequestProperty("Content-type", "application/json");
                urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Proxy-connection", "Keep-Alive");
urlConnection.setRequestProperty("Connection", "Keep-Alive");
                urlConnection.setDoInput(true);
                urlConnection.setUseCaches(false);
                urlConnection.setReadTimeout(30000);
                urlConnection.setRequestMethod("POST");
                DataOutputStream dataOut = new     DataOutputStream(urlConnection.getOutputStream());
                dataOut.writeBytes(dateText);
                dataOut.flush();

BufferedReader bufIn = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String sResponse;
            StringBuilder s = new StringBuilder();

         //bufIn is null as error as closed urlcConnection
            while ((sResponse = bufIn.readLine()) != null) {
                s = s.append(sResponse);
            }

錯誤詳細信息:08-May-12 09:09:51 SsliferSnifferActivity通過代理INFO連接

08-May-12 09:09:54 SsliferSnifferActivity javax.net.ssl.SSLException: Write error: ssl=0x2d42b8: I/O error during system call, Broken pipe
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_write(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:837)
at java.io.OutputStream.write(OutputStream.java:80)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.writeRequestHeaders(HttpURLConnectionImpl.java:799)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1028)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726)
at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:110)
at uk.co.flurrished.sslifersniffer.SslifersnifferActivity.makeRequest(SslifersnifferActivity.java:236)
at uk.co.flurrished.sslifersniffer.SslifersnifferActivity.access$2(SslifersnifferActivity.java:148)
at uk.co.flurrished.sslifersniffer.SslifersnifferActivity$2.onClick(SslifersnifferActivity.java:76)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3822)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

編輯:這似乎是由服務器引發400(錯誤請求)並關閉管道引起的。 當通過導致400的代理路由時,ANdroid 2.3增加了額外的內容是什么?

“折斷的管道”只有一個含義。 您已寫入另一端已關閉的連接。 您確定對等方確實在說SSL嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM