我开发了一个带有minSdkVersion 21和targetSdkVersion 26的Android应用程序。我已经从菜单构建了apk - >构建 - >建立APK(s)。我从路径..app \ build \ outputs \ apk \ debug中取了apk。它在Android版本6.0或7.0中工作,但它在调用api期间无法在Android版本5.0或5.1.1中工作并抛出错误请求400.我将我的代码放在下面。
protected String doInBackground(URL... urls) {
//android.os.Debug.waitForDebugger();
HttpURLConnection oConn = null;
BufferedReader oBR = null;
String csResponseData = "";
//String csResponse = "";
URL url= null;
try {
url = new URL(urls[0].toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
oConn =(HttpURLConnection) url.openConnection();
//InputStream inputStream = oConn.getInputStream();
int inResponseCode = oConn.getResponseCode();
if(inResponseCode == HttpURLConnection.HTTP_OK){
oBR = new BufferedReader(new InputStreamReader(oConn.getInputStream()));
csResponseData = oBR.readLine();
m_csStatus = "SUCCESS";
}else{
switch (inResponseCode) {
case HttpURLConnection.HTTP_FORBIDDEN: //403
m_csErrorMsg = "Response Code :: " + inResponseCode + " FORBIDDEN.";
break;
case HttpURLConnection.HTTP_NOT_FOUND: //404
m_csErrorMsg = "Response Code :: " + inResponseCode + " INVALID API URL.";
break;
case HttpURLConnection.HTTP_BAD_REQUEST: //400
m_csErrorMsg = "Response Code :: " + inResponseCode + " BAD REQUEST.";
break;
case HttpURLConnection.HTTP_GATEWAY_TIMEOUT: //504
m_csErrorMsg = "Response Code :: " + inResponseCode + " GATEWAY TIMEOUT.";
break;
case HttpURLConnection.HTTP_UNAVAILABLE: //503
m_csErrorMsg = "Response Code :: " + inResponseCode + " UNAVAILABLE.";
break;
case HttpURLConnection.HTTP_BAD_METHOD: //405
m_csErrorMsg = "Response Code :: " + inResponseCode + " BAD METHOD.";
break;
case HttpURLConnection.HTTP_INTERNAL_ERROR: //500
m_csErrorMsg = "Response Code :: " + inResponseCode + " SERVER INTERNAL ERROR.";
break;
default:
m_csErrorMsg = "Response Code :: " + inResponseCode + " UNKNOWN ERROR.";
break;
}
oBR = new BufferedReader(new InputStreamReader(oConn.getErrorStream()));
csResponseData = "";
m_csErrorMsg += "\nError Message :: " + oBR.readLine();
m_csStatus = "FAILED";
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
oBR = null;
if(oConn != null){
oConn.disconnect();
}
}
return csResponseData;
}