Я пытаюсь получить ответ от веб-сайта / сервера, и все, что я получаю взамен:
System.ArgumentException','Object of type \'System.DBNull\' cannot be converted to type \'System.String
мой код PHP:
$url = 'website';
$fields = array('searchstring' => urlencode('solkrem'), 'menuID' => urlencode(0), 'genses' => urlencode('20170201178577A2F54'), 'removeimages' => urlencode(false));
function httpPost($url, $data)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
echo "<br><br>";
$result = httpPost($url,$fields);
var_dump($result);
Я также знаю, когда я пытаюсь сделать это через requestmaker.com с данными и URL, я получаю ответ, который хотел …
Разве я не кодирую свои поля правильно, или в чем может быть причина?
РЕДАКТИРОВАТЬ: некоторая информация от requestmaker.com:
Заголовки запроса отправлены:
POST xxxxx HTTP/1.1
Host: xxx.com
Accept: */*
Content-Type: text/html
Content-Length: 75
заголовок запроса получен:
HTTP/1.1 200 OK
Date: Thu, 02 Feb 2017 14:03:20 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Expires: Thu, 02 Feb 2017 14:03:19 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 58300
РЕДАКТИРОВАТЬ 3:
Я узнал, даже что сайт просит меня добавить детали с & разделитель, он не будет работать, если его так, и он выдаст ту же ошибку:
Но если это выглядит так, без & Сепаратор, это работает. Я не знаю, как его отправить, вызвать его бэкэнд PHP на тестовой странице.
Кроме того, если я не отправляю какие-либо поля, он выдаст тот же вывод, что и ошибка, которая у меня есть.
обновление 4:
С их сайта я увидел, что они отправляют его так:
'searchstring=solkrem\r\nmenuID=0\r\ngenses=20170201178577A2F54\r\nremoveimages=false
это что-то сделает? хмм.
Я думаю, что ваша ошибка с параметром «removeimages» …
У тебя есть:
'removeimages' => urlencode(false)
И это, вероятно, должно быть:
'removeimages' => urlencode('false')
URL, кодирующий логическое значение false, не пропустит ничего в строке запроса и не создаст нулевое значение на другом конце.
Других решений пока нет …