通过AsyncHttpClient将JSON作为POST请求发送到服务器

我想通过LoopJ的AsndroidAsyncHttpt将JSON作为POST发送到我的本地主机服务器。 我使用这个方法:在我的代码public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) ,但它不起作用。 这是我的代码:

 private void loginUser() throws JSONException, UnsupportedEncodingException { String login = textLogin.getText().toString(); String password = textPassword.getText().toString(); JSONObject jsonObject = new JSONObject(); if(Utility.isNotNull(login) && Utility.isNotNull(password)) { jsonObject.put("username", login); jsonObject.put("password", password); invokeWS(jsonObject); } else{ Toast.makeText(getApplicationContext(), "Proszę wypełnić wszystkie pola!", Toast.LENGTH_LONG).show(); } } private void invokeWS(JSONObject jsonObject) throws UnsupportedEncodingException { StringEntity entity = new StringEntity(jsonObject.toString()); AsyncHttpClient client = new AsyncHttpClient(); Log.i("SER", "http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/login/auth" + entity); Log.i("SER", "http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/login/auth" + jsonObject); client.post(getApplicationContext(), "http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/login/auth", entity, "application/json", new JsonHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, JSONObject obj) { try { Log.i("SER", "HERE!"); String login = obj.getString("login"); int ID = obj.getInt("id"); //user.setUserId(obj.getInt("userid")); } catch (JSONException e) { // TODO Auto-generated catch block Toast.makeText(getApplicationContext(), "Error Occured [Server's JSON response might be invalid]!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { if (statusCode == 404) { Toast.makeText(getApplicationContext(), "404 - Nie odnaleziono serwera!", Toast.LENGTH_LONG).show(); } else if (statusCode == 500) { Toast.makeText(getApplicationContext(), "500 - Coś poszło nie tak po stronie serwera!", Toast.LENGTH_LONG).show(); } else if (statusCode == 403) { Toast.makeText(getApplicationContext(), "Podano niepoprawne dane!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), throwable.toString(), Toast.LENGTH_LONG).show(); } } }); } 

我的Logs看起来不错:

 http://MY_IP_ADDRESS:8080/silownia_java/rest/login/authorg.apache.http.entity.StringEntity@384d6a6d http://MY_IP_ADDRESS:8080/silownia_java/rest/login/auth{"username":"barni","password":"12345"} 

但是我得到这样的错误:

 org.apache.http.client.HttpResponseException: Unsupported Media Type 

另外,我知道服务器没有得到任何请求。 那么,原因可能是什么?

Solutions Collecting From Web of "通过AsyncHttpClient将JSON作为POST请求发送到服务器"

我解决了它,通过添加标题信息到我的entity对象。

 ByteArrayEntity entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8")); entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));