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<String,String,String>{
@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();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다