Теперь мне, возможно, потребуется отправить параметры (т. Е. param1, param2, param3) с помощью POST метода, потому что они очень длинные. Я думал добавить дополнительный параметр к этому методу (т.Е. String HttpMethod).
Как я могу изменить приведенный выше код как можно меньше, чтобы иметь возможность отправлять параметры либо через GET, либо POST?
Я надеялся, что изменение
connection.setRequestMethod("GET");
Для
connection.setRequestMethod("POST");
могло бы сработать, но параметры по-прежнему отправляются с помощью метода GET .
У HttpURLConnection есть какой-нибудь метод, который мог бы помочь? Есть ли какая-нибудь полезная конструкция Java?
Любая помощь была бы очень признательна.
Переведено автоматически
Ответ 1
В запросе GET параметры отправляются как часть URL-адреса.
В запросе POST параметры отправляются как тело запроса, после заголовков.
Чтобы создать POST с помощью HttpURLConnection, вам необходимо записать параметры в соединение после того, как вы открыли соединение.
Вот простой пример, который отправляет форму, а затем выводит страницу результатов в System.out. Измените URL и параметры POST соответствующим образом, конечно:
classTest { publicstaticvoidmain(String[] args)throws Exception { URLurl=newURL("http://example.net/new-message.php"); Map<String,Object> params = newLinkedHashMap<>(); params.put("name", "Freddie the Fish"); params.put("email", "fishie@seamail.example.com"); params.put("reply_to_thread", 10394); params.put("message", "Shark attacks in Botany Bay have gotten out of control. We need more defensive dolphins to protect the schools here, but Mayor Porpoise is too busy stuffing his snout with lobsters. He's so shellfish.");
Я нахожу HttpURLConnection действительно громоздким в использовании. И вам придется написать много шаблонного кода, подверженного ошибкам. Мне нужна была облегченная оболочка для моих проектов Android, и я получил библиотеку, которую вы также можете использовать: DavidWebb.
Приведенный выше пример можно было бы записать следующим образом: