Пытаюсь "собрать" по своим старым знаниям PHP скрипт для автозаполнения данных на сайте-агрегаторе пользовательских данных, работающего на asp.net mvc (в нем вообще не соображаю). В чем может быть проблема?
Вот запрос:
function search($url,$postfields){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('./t.txt', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Accept: application/json, text/javascript, */*; q=0.01",
"Accept-Encoding: gzip, deflate, br",
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Connection: keep-alive",
"Content-Length: " . strlen($postfields)."",
"Host: site",
"Origin: https://site",
"Referer: https://site/Project/NZS?subsystem=623",
"X-Requested-With: XMLHttpRequest"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($ch);
curl_close($ch);
return $result;
}
$udec = [
'draw' => "1",
'columns[0][data]'=> "0",
'columns[0][name]' =>"",
'search[value]'=> "",
'search[regex]' =>"false"];
$udec = json_encode ($udec, JSON_UNESCAPED_UNICODE);
$third = search('https://site/Project/NZS_GetPartData',$udec);
По идее сервер на указанный запрос должен ответить данными JSON, но получаю вот это:
Ошибка сервера в приложении '/'.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: System.ArgumentException: The parameters dictionary contains a null entry for parameter 'length' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult NZS_GetPartData(Int32, Int32)' in 'Tip.Controllers.ProjectController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Имя параметра: parameters.
Трассировка стека:
[ArgumentException: The parameters dictionary contains a null entry for parameter 'length' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult NZS_GetPartData(Int32, Int32)' in 'Tip.Controllers.ProjectController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Имя параметра: parameters]...
Помогите, а то придется вручную вносить тысячи записей.
Curl verbose ошибок не выдал. проблема скорее не в запросе а в ее обработке, этого параметра 'parameters' нет в запросе.