Я пытаюсь сделать POST-запрос в AsyncTask, но метод запроса все время остается как GET.
У меня есть эта проблема, так как я переместил HTTP-запрос в AsyncTask, тот же код работал раньше, когда это было в потоке пользовательского интерфейса.
Код doInBackground приведен ниже:
protected String doInBackground(String... string) {
httpPostToArduino (string[0]);
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute ();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute (s);
}
public void httpPostToArduino(String message){
curArd1UrlString="http://myprivateurl.com";
URL url = null;
try {
url = new URL (curArd1UrlString);
} catch (MalformedURLException e) {
e.printStackTrace ();
}
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
StringBuilder result = new StringBuilder (); //test
try {
urlConnection = (HttpURLConnection) url.openConnection ();
//Set header content
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Authorization","password");
urlConnection.setDoOutput(true);
//Set body content
OutputStreamWriter os = new OutputStreamWriter (urlConnection.getOutputStream());
os.write(message.toString ());
os.flush();
InputStream in = new BufferedInputStream (urlConnection.getInputStream ());
reader = new BufferedReader (new InputStreamReader (in));
//Read the first line of the response - just the JSON
result.append (reader.readLine ());
//The below WHILE reads all the content of the response message, but we only need the first line
String ReceivedJSON = result.toString ();
JSONObject parentObject = new JSONObject (ReceivedJSON);
В отладчике под urlConnection для поля метода это всегда GET.Ниже отрывок из режима отладчика, чтобы быть более понятным.
Я получаю ответ после каждого запроса, но ответ зависит от содержимого телаPOST-запрос.
Что я должен изменить в коде, чтобы изменить метод запроса на POST?