我正在尝试通过AVD连接到服务器。当我连接到真正的服务器时,它工作得很好,但是当我尝试在同一台服务器上但在本地主机上连接时,我有一个响应代码400 (定义:由于语法格式错误,服务器无法理解请求。客户端不应该在没有修改的情况下重复请求。) BTW ,我在其他主题上看到了将localhost更改为10.0.2.2。 这是我的代码:
private final String SERVER = "http://10.0.2.2:51502/example/example";
protected String doInBackground(String... strJson ) {
URL url;
String response = "";
try {
url = new URL(SERVER);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(os, "UTF-8"));
writer.write(strJson[0]);
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line=br.readLine()) != null) {
response+=line;
}
}
else {
response="PAS DE HTTP_OK : " + responseCode;
}
conn.disconnect();
} catch (MalformedURLException e) {
response = "malformedURL" + e.toString();
} catch (ProtocolException e) {
response = "Protocol" + e.toString();
} catch (IOException e) {
response = "IOException" + e.toString();
} catch (Exception e) {
e.printStackTrace();
response = "Exception" + e.toString();
}
return response;
}