Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> в каком формате curl вставляет данные в запрос, реализация работы curl на другом ЯП 
:(
    Опции темы
Lipetsk
  Дата 30.5.2013, 13:16 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: нет
Всего: 5



есть рабочий код на php
Код

$string = array('reg' => 'la-la-la', 'sign' => '6543');
 
$ch = curl_init();  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_URL, 'https://some.domain.ru');
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string); 

$result = curl_exec($ch);


мне нужно этот же POST-запрос выполнить не на сервере а на клиенте, а для этого нужно понять что вставляется в тело запроса
пробовал reg=la-la-la&sign=6543 но не угадал

Спасибо всем отвечающим
PM   Вверх
krypt3r
Дата 30.5.2013, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



Почитайте в мане внимательно о CURLOPT_POSTFIELDS. Там все описано.
PM MAIL   Вверх
Lipetsk
  Дата 30.5.2013, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: нет
Всего: 5



в мануале я нашел только что
Цитата

This parameter can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.

брал отсюда ссылка 
PM   Вверх
krypt3r
Дата 30.5.2013, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



На это я и намекал — отправляются запросы с разным Content-Type
PM MAIL   Вверх
Lipetsk
  Дата 30.5.2013, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: нет
Всего: 5



нет, XmlHttp.SetRequestHeader("Content-Type", "multipart/form-data") не помогает

еще я знаю, как посмотреть заголовок и тело ответа, полученного от curl_exec($ch);
а можно ли как-то посмотреть тело POST-запроса, что бы можно было точно увидеть, что curl отправляет?
PM   Вверх
Fortop
Дата 30.5.2013, 20:03 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Lipetsk @  30.5.2013,  14:24 Найти цитируемый пост)
а можно ли как-то посмотреть тело POST-запроса, что бы можно было точно увидеть, что curl отправляет? 

Он отправляет ровно то, что вы ему говорите отправить
формат HTTP протокола гуглите.

Для просмотра сетевого трафика пользуйтесь Fiddler2 или Wireshark


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
cia
Дата 30.5.2013, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: 4
Всего: 4



Есть специализированный софт. Снифер называется. Существует большое количество как платных так и бесплатных. Для подобных задач в Windows я пользуюсь IPSniffer.

Добавлено через 4 минуты и 44 секунды
Запускаем снифер, затем запускаем скрипт (на localhost разумеется), затем останавливаем снифер. Фильтруем пакеты и находим среди них post-данные.
Но для данного кода это не обязательно итак видно, что в пост всего два параметра, эмулировать которые можно так:
Код

<form action="https://some.domain.ru" method="post">
<input type="hidden" name="reg" value="la-la-la">
<input type="hidden" name="sign" value="6543">
</form>


Добавлено через 7 минут и 36 секунд
Кстати, CURL_OPT_POST_FIELDS ожидает получить строку, а не массив.
PM WWW ICQ   Вверх
Nett
Дата 30.5.2013, 23:28 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.5.2008

Репутация: нет
Всего: 1



Надо массив пропустить через http_build_query(), потом подставь в CURLOPT_POSTFIELDS.
В любом случае это надо для POST запроса, или PUT / DELETE, но тогда не хватает опции CURLOPT_CUSTOMREQUEST.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL WWW   Вверх
baldina
Дата 31.5.2013, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(Lipetsk @  30.5.2013,  14:24 Найти цитируемый пост)
XmlHttp.SetRequestHeader("Content-Type", "multipart/form-data") не помогает

какое-то ацкое смешение javascript и php или я чего то не понимаю...

Цитата(Lipetsk @  30.5.2013,  14:24 Найти цитируемый пост)
ожно ли как-то посмотреть тело POST-запроса, что бы можно было точно увидеть, что curl отправляет?

Цитата(Fortop @  30.5.2013,  20:03 Найти цитируемый пост)
Для просмотра сетевого трафика пользуйтесь

Цитата(cia @  30.5.2013,  22:57 Найти цитируемый пост)
Запускаем снифер

есть путь проще: прочитать man
Цитата

CURLOPT_POSTFIELDS
Pass a void * as parameter, which should be the full data to post in a HTTP POST operation. You must make sure that the data is formatted the way you want the server to receive it. libcurl will not convert or encode it for you. Most web servers will assume this data to be url-encoded.

так что 
Цитата(Fortop @  30.5.2013,  20:03 Найти цитируемый пост)
Он отправляет ровно то, что вы ему говорите отправить


Цитата(Lipetsk @  30.5.2013,  14:24 Найти цитируемый пост)
еще я знаю, как посмотреть заголовок и тело ответа, полученного от curl_exec($ch);

Код

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
$header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);


PM MAIL   Вверх
krypt3r
Дата 31.5.2013, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



Кстати, а что за другой язык? Может быть, поможет libcurl?
PM MAIL   Вверх
Lipetsk
  Дата 31.5.2013, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: нет
Всего: 5



почитайте внимательнее мой пост
код рабочий, т.е. с CURLOPT_POSTFIELDS передаётся именно Array, а не строка
вопрос только в том, что curl вставляет в тело пакета вместо этого массива

ладно, попробую установить на свой компьютер Denwer и воспользоваться снифером
только не уверен, что Fiddler2 тут поможет, т.к. он по сути является прокси, а Appache будет лезть в интернет напрямую -- в обход прокси
PM   Вверх
ksnk
Дата 31.5.2013, 09:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Lipetsk, Неплохо бы выяснить язык программирования. Для всех из них существуют примеры веб приложений. 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
baldina
Дата 31.5.2013, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(Lipetsk @  31.5.2013,  08:40 Найти цитируемый пост)
вопрос только в том, что curl вставляет в тело пакета вместо этого массива

вставляет curl который php, но не curllib

Цитата(Lipetsk @  31.5.2013,  08:40 Найти цитируемый пост)
ладно, попробую установить на свой компьютер Denwer и воспользоваться снифером

не трудитесь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1351 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.