-POST Json with HttpUrlConnection

当我使用python-script向此服务器发送请求时,我为我的应用程序构建了服务器端,它的工作正常,但是使用我的应用程序它不起作用。

服务器:

服务器包含一个数据库。 当我发送一个JSON {"name":"your_name"} ,服务器在DB中保存名称。

应用(Android):

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonSend=(Button)findViewById(R.id.button_send); buttonSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AsyncTaskRunner postReq = new AsyncTaskRunner(); postReq.execute("start"); } }); } private class AsyncTaskRunner extends AsyncTask{ @Override protected String doInBackground(String... params) { try { String url="my url"; URL object=new URL(url); HttpURLConnection con = (HttpURLConnection) object.openConnection(); con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); con.setRequestMethod("POST"); JSONObject cred = new JSONObject(); cred.put("name","my_name") OutputStream os = con.getOutputStream(); os.write(cred.toString().getBytes("UTF-8")); os.close(); } catch (Exception e){ Log.v("ErrorAPP",e.toString()); } return ""; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); } } 

在我运行这个应用程序的手机中我嗅探数据,我看到应用程序向服务器发送请求,但数据包不包含json

我解决了!

改变一点:

 OutputStream os = con.getOutputStream(); os.write(cred.toString().getBytes("UTF-8")); os.close(); 

至:

 DataOutputStream localDataOutputStream = new DataOutputStream(con.getOutputStream()); localDataOutputStream.writeBytes(cred.toString()); localDataOutputStream.flush(); localDataOutputStream.close();