Как указано в документах для Android, я установил setDoOutPut(true);
так, что соединение отправляется как POST
. Однако в отладчике, когда я проверяю член метода HTTPURLConnection
, он всегда GET
, даже после setDoOutput (true) и даже setRequestMethod("POST")
. Как-то вернуть его обратно в GET
?Метод HttpURLConnection всегда GET?
URL url = new URL(serverAddr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod(verb);
urlConnection.setFixedLengthStreamingMode(postBody.getBytes().length);
//urlConnection.setRequestProperty("Content-Length", postBody.getBytes().toString());
urlConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
urlConnection.connect();
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
out.write(postBody.getBytes());
out.flush();
int responseCode = urlConnection.getResponseCode();
System.out.println("HTTPS RESPONSE CODE: " + responseCode);
out.close();
EDIT: Это должно быть ошибка ... отладчик показывает переменную-член setDoOuput ясно как ложное, даже когда я устанавливаю его к истине. Это не задано!
Что такое 'verb'? И вы подтвердили, что он действительно делает запрос GET, а не POST? – dylan7
Глагол передается со значением «POST». Как я могу это проверить? Код ответа возвращает 400, но я не уверен, что это плохой запрос GET или плохой запрос POST. – ShrimpCrackers
Попробуйте следующее URL-адрес URL = новый URL-адрес (адрес); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput (true); urlConnection.setRequestProperty («Content-Type», ...); OutputStream outputStream = new BufferedOutputStream (urlConnection.getOutputStream()); BufferedWriter writer = new BufferedWriter (новый OutputStreamWriter (outputStream, "utf-8")); writer.write (requestBody); writer.flush(); writer.close(); outputStream.close(); ' – BNK