在我的應用程序中,我使用HTTPClient,但是depreceted,我想補充這AsyncHttpClient。這是我的代碼,我使用的HttpClient和它的作品corretly:Java的Android補充HTTPClient AsyncHttpClient
HttpClient httpclient = HttpClientUtil.getHttpClient(context);
HttpPost httppost = new HttpPost(Util.getServerUrl(context)
+ "/GetData");
String login_xml = QueryGenerator.getDataRequest(version, power, lon,
lat, radius, Util.getLastStamp(context));
ArrayList<NameValuePair> namevaluepairs = new ArrayList<>(2);
namevaluepairs.add(new BasicNameValuePair("token", String
.valueOf(E_Gps.TOKEN)));
namevaluepairs.add(new BasicNameValuePair("xml", login_xml));
httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httppost);
InputStream responseInputStream = new BufferedInputStream(response
.getEntity().getContent());
這是我在做AsyncHttpClient但它不corretly工作:
AsyncHttpClient client = new AsyncHttpClient();
String url = Util.getServerUrl(context) + "/GetData";
ContentValues values=new ContentValues();
values.put("token", String.valueOf(E_Gps.TOKEN));
values.put("xml", login_xml);
StringEntity entity = null;
try {
entity = new StringEntity(values.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
entity.setContentType(new BasicHeader("Content-Type","application/xml"));
client.post(context,url,entity, "application/xml", new AsyncHttpResponseHandler(Looper.getMainLooper()) {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.e("success_noti", new String(responseBody) + "");
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.e("success_noti", new String(responseBody) + "");
Log.e("Status " , statusCode + " ");
}
});
那麼什麼是不正確的? – greenapps
@greenapps服務器的響應是400錯誤的請求 –
「application/xml」不正確。改爲使用表單url編碼。谷歌正確的描述。 – greenapps