Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Ошибка 400 в POST-запросе (PHP)

Ответить
Настройки темы
[решено] Ошибка 400 в POST-запросе (PHP)

Новый участник


Сообщения: 44
Благодарности: 7

Профиль | Отправить PM | Цитировать


Здравствуйте!

До этого писал функцию для парсера.
Все нормально работало, а теперь в ответ получаю: HTTP Error 400. The size of the request headers is too long.

Вот код функции:
PHP код: Выделить весь код

function post_content ($url,$postdata) {

  
$uagent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0";
  
$headers = array
                (
                
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
                
'Accept-Encoding: deflate'
   
);
  
  
$ch curl_init();
  
curl_setopt($chCURLOPT_URL$url);                // установка URL и других необходимых параметров
  
curl_setopt($chCURLOPT_POSTtrue);                // установка метода передачи параметров
//  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);        // установка браузера
  
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);    // возвращает веб-страницу
//  curl_setopt($ch, CURLOPT_HEADER, false);            // не возвращает заголовки
  
curl_setopt($chCURLOPT_HTTPHEADER$headers);    // добавляем заголовков
   
curl_setopt($chCURLOPT_PROXY'x.x.x.x:xxxx');    // Прокси 
   
curl_setopt($chCURLOPT_PROXYUSERPWD,'user:pass');// авторизация  
  
curl_setopt($chCURLOPT_REFERER$url);// Подделываем значение - откуда пришли данные.
//  curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  
curl_setopt($chCURLOPT_COOKIEJAR"elib_cookie.txt");    // Функции для обработки установливаемых сайтом кук.
  
curl_setopt($chCURLOPT_COOKIEFILE,"elib_cookie.txt");    // Функции для обработки установливаемых сайтом кук.
  
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);            // разрешить переадресацию
  
curl_setopt($chCURLOPT_ENCODING"");                    // обрабатывает все кодировки
  
curl_setopt($chCURLOPT_TIMEOUT120);                    // таймаут ответа
//  curl_setopt($ch, CURLOPT_FAILONERROR, true);                    // подробный отчет об ошибках
  
curl_setopt($chCURLOPT_POSTFIELDS$postdata);            //формируем сам запрос


  
$content curl_exec$ch );
  
$err     curl_errno$ch );
  
$errmsg  curl_error$ch );
  
$header  curl_getinfo$ch );
  
curl_close$ch );

  
$header['errno']   = $err;
  
$header['errmsg']  = $errmsg;
  
$header['content'] = $content;
  return 
$header;



Использую ее здесь:
PHP код: Выделить весь код

$url 'http://elibrary.ru/authors.asp';


$post='authors_all=&pagenum=&authorbox_name=&selid=&orgid=984&orgadminid=&surname=&codetype=SPIN&codevalue=
&town=&countryid=&orgname=%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%B2%D0%BE%D1%81%D1%82%D0%BE%D0%BA%D1%81%D0
%BA%D0%B8%D0%B9+%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B
%D0%B9+%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82+%D1%8D%D0%BA%D0%BE%D0%BD%D0
%BE%D0%BC%D0%B8%D0%BA%D0%B8+%D0%B8+%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0&rubriccode=&sortorder=0
&order=0&hid741746=%D0%9C%D0%B0%D1%81%D0%BB%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F+%D0%9E+%D0%92&authorboxid
=0'
;

$result post_content$url$post );

echo 
"errno ".$result['errno']."<br/> 
     errmsg "
.$result['errmsg']."<br/>
     content "
.$result['content']."<br/>"


Как я понял на сайте, что-то поменяли....
Перехватил POST-запрос с помощью FireBug, пробовал скопировать от туда POST-запрос полностью, толку ноль!
Вот что было в FireBug:

Заголовок запроса

POST http://elibrary.ru/authors.asp HTTP/1.1

Host: elibrary.ru

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://elibrary.ru/authors.asp

Cookie: UserID=1475842157; SesCookieID=358975791; __utma=216012346.286143210.1435126771.1445224911.1454871428.6; __utmz=216042306.1435126771.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=216042306; __utmb=216154306.1.10.1457891428; __utmt=1

Connection: keep-alive


Заголовок ответа
HTTP/1.0 200 OK

Cache-Control: private

Content-Length: 225396

Content-Type: text/html; Charset=UTF-8

Server: Microsoft-IIS/7.0

X-Powered-By: ASP.NET

Date: Mon, 19 Oct 2015 05:10:49 GMT

X-Cache: MISS from libnh.vvsu.ru, MISS from nh.vvsu.ru

X-Cache-Lookup: MISS from libnh.vvsu.ru:3128, MISS from nh.vvsu.ru:3128

Via: 1.0 libnh.vvsu.ru (squid), 1.0 nh.vvsu.ru (squid)

Proxy-Connection: keep-alive


Запрос заголовка из потока загрузки
Content-Length
610
Content-Type
application/x-www-form-urlencoded


POST(исходный код)
authors_all=&pagenum=&authorbox_name=&selid=&orgid=984&orgadminid=&surname=&codetype=SPIN&codevalue=
&town=&countryid=&orgname=%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%B2%D0%BE%D1%81%D1%82%D0%BE%D0%BA%D1%81%D 0
%BA%D0%B8%D0%B9+%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B
%D0%B9+%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82+%D1%8D%D0%BA%D0%BE%D0%BD%D 0
%BE%D0%BC%D0%B8%D0%BA%D0%B8+%D0%B8+%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0&rubriccode=&sortorder= 0
&order=0&hid741746=%D0%9C%D0%B0%D1%81%D0%BB%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F+%D0%9E+%D0%92&author boxid
=0

Отправлено: 08:25, 19-10-2015

 

Новый участник


Сообщения: 44
Благодарности: 7

Профиль | Отправить PM | Цитировать


Нашел причину
Что-то не то было с сессией.
Добавил
PHP код: Выделить весь код

curl_setopt($chCURLOPT_COOKIESESSIONtrue);            //начинает новую сессию 


И все заработало


А бился с этим почти неделю....................

Отправлено: 09:26, 19-10-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Ошибка 400 в POST-запросе (PHP)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как отправить post запрос средствами php? Андрей_Угаров@vk Вебмастеру 2 01-07-2013 14:50
JQuery post запрос и PHP darksmoke Вебмастеру 12 09-11-2009 00:01
PHP: Получение переменных через POST DANTIST Вебмастеру 5 01-04-2007 17:27
php как запретить принимать post данные со страницы не находящейся на моем сайте? гы. E-mail Вебмастеру 1 03-04-2005 19:19
method="post" формы и передача переменных в PHP Prisoner Вебмастеру 5 26-04-2003 18:01




 
Переход