connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
Тип содержимого должен соответствовать фактическому формату postData
. Тип содержимого application/x-www-form-urlencoded
необходим только в том случае, если тип содержимого действительно url-кодированный . Например. Вы кодируете данные POST следующим образом:
String data = "param1=" + URLEncoder.encode(param1, "UTF-8")
+ "¶m2=" + URLEncoder.encode(param2, "UTF-8");
Таким образом, другая сторона сможет анализировать данные в соответствии с указанным форматом, не нарушая их.
И
connection.setRequestProperty("Content-Length", Integer.toString(postData.length));
Это предпочтительно для обеспечения надежной передачи данных. Если вы пропустите это, и соединение каким-то образом оборвется, то другая сторона никогда не сможет определить, полностью ли передан контент или нет.
Тем не менее приведение к HttpUrlConnection
не нужно, если вы знаете, что метод запроса "автоматически" будет установлен на POST
, если вы выполните:
connection.setDoOutput(true);
или в вашем случае больше подойдет:
connection.setDoOutput("POST".equals(method));