Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/43: Рейтинг темы: голосов - 43, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 26

CURL - правильно отправить POST

30.07.2016, 19:44. Показов 8148. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Отправляю запрос:
PHP
1
2
3
4
5
6
7
8
9
  $ch = curl_init();     
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS,'{"Language":"ru"}{"Params":[null, null, "1", null, null]}');
  curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0');   
  $data = curl_exec($ch);
  curl_close($ch);
  echo $data;
Получаю ответ:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Warning: curl_setopt() expects parameter 1 to be resource, null given in on line 5
HTTP/1.1 405 Method Not Allowed
Server: nginx/1.11.3
Date: Sat, 30 Jul 2016 16:01:59 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1565
Connection: keep-alive
Cache-Control: private
Allow: POST
 
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Service</title>
  </head>
  <body>
    <div id="content">
      <p class="heading1">Service</p>
      <p>Method not allowed.</p>
    </div>
  </body>
</html>
Смотрю, как делает это браузер (Chrome -> F12 -> Вкладка Network
):
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
General
Request URL:xxxxxxxxxxx
Request Method:POST
Status Code:200 
Remote Address:94.242.194.182:443
 
Response Headers
access-control-allow-credentials:true
access-control-allow-headers:DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
access-control-allow-methods:GET, POST, OPTIONS
access-control-allow-origin:*
cache-control:private
content-encoding:gzip
content-type:application/json; charset=utf-8
date:Sat, 30 Jul 2016 15:14:30 GMT
server:nginx/1.11.3
status:200
vary:Accept-Encoding
 
Request Headers
:authority:xxxxxxxxxxx
:method:POST
:path:/xxxxxxxxxxx/xxxxxxxxxxx
:scheme:https
accept:*/*
accept-encoding:gzip, deflate, lzma, br
accept-language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
content-length:57
content-type:application/json
cookie:SESSION=g9uau1118p70lknk98u6e3g5v0; *******id=a_5343b_853c_; ref_partner_id=4619; *******id_dt=1469884198; tzo=3; blocks=1%2C1%2C1%2C1%2C1%2C1%2C1%2C1; _ym_uid=1469884240227143016; _ym_isad=2; warnmsg=0; fortuna=1; _ga=GA1.2.183166187.1469884236; _gat=1; _ym_visorc_22934032=w; lng=ru; wcmaintab=8978875%3B1469891683
origin:[url]https://xxxxxxxxxxx[/url]
referer:[url]https://xxxxxxxxxxx/xxxxxxxxxxx[/url]
user-agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41
x-requested-with:XMLHttpRequest
 
Request Payload
{"Language":"ru"}{"Params":[null, null, "1", null, null]}
Други, подскажите, пожалуйста, где и что я делаю не так, и как правильно сформировать запрос с выше изложенными данными.
P.S
какой параметр 1 ожидает curl_setopt() в строке 5
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2016, 19:44
Ответы с готовыми решениями:

Отправить post curl с raw data
Как передать запрос такого вида: Чтобы в имени передать Raw Data а в значении все остальное? Прикрепляйте файлы и изображения к...

Отправить запрос с CURL
Добрый отсылаю запрос авторизации с CURL для этой формы: &lt;form data-tab=&quot;sign-in&quot; id=&quot;form&quot; class=&quot;sin active&quot;...

Отправить данные через curl
Всем привет! Пишу некий сервис. Клиент через curl отправляет на мой сервис пару файлов и набор параметров. Сервис их принимает и...

8
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 11
30.07.2016, 19:56
curl_setopt($ch, CURLOPT_POST, true);

Добавлено через 2 минуты
в 5й строке ожидается явно не переменная $curl в качестве параметра, ибо она нигде не объявлена, там должна быть $ch

Добавлено через 3 минуты
в той же 5й строке лучше передать данные в массиве, как нить так
PHP
1
2
3
4
 curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'photo' => $uploadPhoto,
        'photo2' => $uploadPhoto2,
    ));
0
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 26
30.07.2016, 20:27  [ТС]
dasdaas,
Цитата Сообщение от kyran29 Посмотреть сообщение
{"Language":"ru"}{"Params":[null, null, "1", null, null]}
Я правильно понимаю нужно так:
PHP
1
2
3
4
 curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'Language' => 'ru',
        'Params' => '[null, null, "1", null, null]',
    ));
0
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 11
30.07.2016, 23:08
PHP
1
2
3
4
5
6
7
<?php
$array = array(
    "foo" => "bar",
    "multi" => array(
         "foo" => "bar"
     )
);
я бы передал так
0
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 26
30.07.2016, 23:20  [ТС]
dasdaas,

PHP
1
curl_setopt($ch, CURLOPT_POSTFIELDS,$array = array('Language' => 'ru','Params' => array('null','null','1','null','null')));
получаю вот такой ответ:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HTTP/1.1 100 Continue
 
HTTP/1.1 500 Internal Server Error
Server: nginx/1.11.3
Date: Sat, 30 Jul 2016 20:16:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 193
Connection: close
 
<html>
<head><title>500 Internal Server Error</title></head>
<body bgcolor="white">
<center><h1>500 Internal Server Error</h1></center>
<hr><center>nginx/1.11.3</center>
</body>
</html>
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
30.07.2016, 23:27
Лучший ответ Сообщение было отмечено kyran29 как решение

Решение

kyran29, Вам же json отправить надо?
Тогда
PHP
1
2
$array = array('Language' => 'ru','Params' => array('null','null','1','null','null'));
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($array, JSON_UNESCAPED_UNICODE));
1
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 26
31.07.2016, 00:26  [ТС]
Cra3y, - Спасибо!

вот:
PHP
1
2
3
4
5
6
7
8
9
10
$data = array("Language" => "ru", "Params" => array("null", "null", "1", "null", "null"));   
$data_string = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_string)));
$data = curl_exec($ch);
$data = json_decode($data);
var_dump($data);
ответ приходит

Добавлено через 8 минут
Cra3y,

вот эти строки не нужны в запросе?
HTML5
1
2
referer:https://xxxxxxxxxxx/xxxxxxxxxxx
x-requested-with:XMLHttpRequest
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
31.07.2016, 00:35
Цитата Сообщение от kyran29 Посмотреть сообщение
вот эти строки не нужны в запросе?
если без них работает, то наверно не нужны...
0
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 26
31.07.2016, 00:41  [ТС]
Cra3y,

Большое спасибо, очень выручили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2016, 00:41
Помогаю со студенческими работами здесь

CURL Post > Get
Здравствуйте, не получается переделать из post в get post private $xml_api = array( &quot;agent_req_num&quot; =&gt;...

Curl post запрос PHP
Не получается сформировать правильный post-запрос с помощью Curl PHP. Есть код: &lt;?php $post = ; $ch =...

Не отправляется post запрос (cURL)
Доброго времени суток. Появилась необходимость спарсить вопросы для теста. Парсить собираюсь отсюда http://myrusakov.ru/tests.html ...

Curl не получается отправить заголовки
Всем привет! Опишу алгоритм действий: 1. Смотрю в отладчике, какие заголовки браузер посылает на сайт. 2. Копирую все эти...

CURL, как отправить запрос и закрыть соединение
Доброго времени суток уважаемые! Подскажите пожалуйста, как с помощью PHP/cURL - выполнить запрос и не дожидаясь ответа - просто закрыть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru