From bd137bfd544fcecdc2db0af9be9bb540f05f80ea Mon Sep 17 00:00:00 2001 From: lidashuang Date: Thu, 27 Aug 2015 11:59:15 +0800 Subject: [PATCH] not allow access data on code not equal 200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit android http 客户端在status code 不是200时,不能获取status code和body http://stackoverflow.com/questions/9129766/urlconnection-is-not-allowing-me-to-access-data-on-http-errors-404-500-etc --- .../java/src/org/cocos2dx/lib/QuickHTTPInterface.java | 11 +++++++++-- .../extra/platform/android/CCHTTPRequestAndroid.cpp | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/cocos2d-x/cocos2dx/platform/android/java/src/org/cocos2dx/lib/QuickHTTPInterface.java b/lib/cocos2d-x/cocos2dx/platform/android/java/src/org/cocos2dx/lib/QuickHTTPInterface.java index bb5a9cbb2..dcc3c1433 100644 --- a/lib/cocos2d-x/cocos2dx/platform/android/java/src/org/cocos2dx/lib/QuickHTTPInterface.java +++ b/lib/cocos2d-x/cocos2dx/platform/android/java/src/org/cocos2dx/lib/QuickHTTPInterface.java @@ -325,8 +325,15 @@ static int getContentLeng(HttpURLConnection http) { static byte[] getResponedString(HttpURLConnection http) { try { - DataInputStream in = new DataInputStream(http.getInputStream()); - + int statusCode = http.getResponseCode(); + + DataInputStream in = null; + if(statusCode != 200 && statusCode != 201) { + in = new DataInputStream(http.getErrorStream()); + }else{ + in = new DataInputStream(http.getInputStream()); + } + byte[] buffer = new byte[1024]; byte[] retBuf = null; int len = in.read(buffer); diff --git a/lib/cocos2d-x/external/extra/platform/android/CCHTTPRequestAndroid.cpp b/lib/cocos2d-x/external/extra/platform/android/CCHTTPRequestAndroid.cpp index 1d46ce370..cfa995d7a 100644 --- a/lib/cocos2d-x/external/extra/platform/android/CCHTTPRequestAndroid.cpp +++ b/lib/cocos2d-x/external/extra/platform/android/CCHTTPRequestAndroid.cpp @@ -606,7 +606,7 @@ void CCHTTPRequest::onRequest(void) m_errorCode = code; m_responseCode = code; m_errorMessage = (code >= 200 && code < 300) ? "" : getResponedErrJava(); - m_state = (code == 200) ? kCCHTTPRequestStateCompleted : kCCHTTPRequestStateFailed; + m_state = (code >= 200 && code < 600) ? kCCHTTPRequestStateCompleted : kCCHTTPRequestStateFailed; m_curlState = kCCHTTPRequestCURLStateClosed; }