Я пытаюсь сделать POST с HttpURLConnection
(мне нужно использовать его таким образом, не могу использовать HttpPost
), и я хотел бы добавить параметры для этого подключения, такие как
post.setEntity(new UrlEncodedFormEntity(nvp));
где
nvp = new ArrayList<NameValuePair>();
имея некоторые данные, хранящиеся в. Я не могу найти способ, как добавить это ArrayList
к моему, HttpURLConnection
который здесь:
HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
https.setHostnameVerifier(DO_NOT_VERIFY);
http = https;
http.setRequestMethod("POST");
http.setDoInput(true);
http.setDoOutput(true);
Причиной такого неудобного сочетания https и http является необходимость не проверять сертификат. Это не проблема, однако, он хорошо размещает сервер. Но мне нужно, чтобы пост с аргументами.
Любые идеи?
Дубликат Отказ от ответственности:
Еще в 2012 году я понятия не имел, как параметры были вставлены в запрос HTTP POST . Я держался, NameValuePair
потому что это было в учебнике. Этот вопрос может показаться , как дубликат, однако, мои 2012 самостоятельно прочитать , что другой вопрос , и он НЕ использование NameValuePair
. Фактически это не решило мою проблему.
Ответы:
Вы можете получить выходной поток для соединения и записать в него строку запроса параметров.
...
источник
URL url = new URL("http://yoururl.com?k1=v1&k2=v2&···&kn=vn");
тогда, когда установлен conn для использования метода POST, не нужно их писать.Поскольку NameValuePair устарела. Мысль поделиться своим кодом
....
источник
""result""
?OutputStream os = conn.getOutputStream();
на jelly bean в связи с отсутствием адреса, связанного с именем хоста?Если вам не нужны
ArrayList<NameValuePair>
параметры for, это более короткое решение, которое создает строку запроса с использованиемUri.Builder
класса:источник
Одним из решений является создание собственной строки параметров.
Это фактический метод, который я использовал для моего последнего проекта. Вам нужно изменить args с hashtable на namevaluepair's:
РАЗМЕЩЕНИЕ ПАРАМЕТРОВ:
источник
Я думаю, что нашел именно то, что вам нужно. Это может помочь другим.
Вы можете использовать метод UrlEncodedFormEntity.writeTo (OutputStream) .
источник
Принятый ответ вызывает исключение ProtocolException по адресу:
OutputStream os = conn.getOutputStream();
потому что он не разрешает вывод для объекта URLConnection. Решение должно включать это:
conn.setDoOutput(true);
чтобы это работало.
источник
Если еще не поздно, я хотел бы поделиться своим кодом
Utils.java:
MainActivity.java:
источник
Существует гораздо более простой подход с использованием PrintWriter (см. Здесь )
В основном все, что вам нужно, это:
источник
AsyncTask
отправить данные какJSONObect
черезPOST
методисточник
Попробуй это:
Вы можете добавить столько,
nameValuePairs
сколько вам нужно. И не забудьте указать количество в списке.источник
How to add parameters to HttpURLConnection using POST
- Это вводит в заблуждение.Для вызова методов POST / PUT / DELETE / GET Restful с пользовательским заголовком или данными JSON можно использовать следующий класс Async.
И использование
источник
Используя org.apache.http.client.HttpClient, вы также можете легко сделать это более читабельным способом, как показано ниже.
В попробуйте поймать вы можете вставить
источник
В моем случае я создал такую функцию, чтобы сделать запрос Post, который принимает String URL и hashmap параметров
источник
Я использую что-то вроде этого:
источник
вот как я передаю "params" (JSONObject) через POST
источник