POST-данные в GET-запросе iOS

Есть ли способ отправить данные POST в запросе GET с помощью ASIHTTPRequest или любой другой сетевой библиотеки в iOS?


person akshay1188    schedule 22.10.2012    source источник
comment
Какие данные POST? Вы хотите установить тело запроса?   -  person    schedule 22.10.2012
comment
POST и GET - это методы HTTP, если вы отправляете что-то, вы заполняете тело HTTP параметром. Когда вы ПОЛУЧАЕТЕ что-то, вы должны использовать строку запроса URL для установки некоторых параметров. Если вы хотите смешать эти два метода, используйте POST, так как это позволит вам установить параметры в теле HTTP и добавить параметры строки запроса URL.   -  person rckoenes    schedule 22.10.2012
comment
Я хочу прикрепить данные JSON к телу запроса   -  person akshay1188    schedule 22.10.2012
comment
Что-нибудь вроде этого stackoverflow.com/ вопросы/2064281/   -  person akshay1188    schedule 22.10.2012
comment
whathaveyoutried.com   -  person deanWombourne    schedule 22.10.2012
comment
Я пытался прикрепить его как параметры GET, но это не работает. Кроме того, нельзя прикрепить JSON в заголовке, так как нет ключа, к которому можно прикрепить   -  person akshay1188    schedule 22.10.2012


Ответы (1)


Добавление данных POST в запрос GET на самом деле не имеет особого смысла — некоторым прокси-серверам это не понравится, а некоторые веб-серверы не примут их или исказят данные по пути. начните, если вы уверены, что он будет работать с вашим сервером:

Поиск слова POST в документах ASI покажет вам, как использовать ASIHTTPRequest объект. Однако ASI устарел, и следует использовать другие решения.

Поиск переполнения стека дает вам этот вопрос, который показывает, как добавить данные POST в NSURLRequest

person deanWombourne    schedule 22.10.2012
comment
Веб-сервер предназначен для работы таким образом. Соответствующий скрипт cURL работает. Образец формата - curl -i --header Content-Type: application/json --header Accept: application/json --header client-agent: 1.21.2 -X GET --data {authtoken:lfghaskjhgh,selection:value} адрес сервера - person akshay1188; 22.10.2012
comment
просто не уверен, как передать этот JSON в --data для запроса GET - person akshay1188; 22.10.2012
comment
Пробовали ли вы использовать ASIFormDataRequest (см. документы, на которые я ссылался в своем ответе), добавляя данные POST в соответствии с примером, а затем устанавливая тип запроса на GET, например myRequest.requestMethod = @GET;`? - person deanWombourne; 22.10.2012
comment
да. Я пробовал это. Когда я использую setPostValue:forKey: я получаю 405 Method Not Allowed. - person akshay1188; 22.10.2012
comment
Это с вашего сервера, а не с ASI - что отправляется по сети на сервер? Данные сообщения были добавлены или отправлены вообще? - person deanWombourne; 22.10.2012
comment
да. Это с сервера. Я использовал HTTPScoop, и он показывает JSON в данных POST запроса. Я думаю, это невозможно. Только что наткнулся на этот https://groups.google.com/forum/?fromgroups=#!topic/asihttprequest/kY8R8RlqO3Q - person akshay1188; 22.10.2012
comment
Сначала вы говорите, что он отправляет данные POST, а затем говорите, что это невозможно? Если HTTPScoop говорит, что JSON перешел с устройства на сервер, наверняка это проблема на стороне сервера? - person deanWombourne; 22.10.2012
comment
JSON прошел, но сервер его не принимает. Потому что, хотя я устанавливаю requestMethod в @GET, он показывает меня как POST в совке. - person akshay1188; 22.10.2012
comment
Можете ли вы создать подкласс ASIFormDataRequest, чтобы всегда передавать GET в качестве метода? - person deanWombourne; 22.10.2012