PHP скручиваемая длинная ссылка с кавычками и пробелами - PullRequest
0 голосов
/ 25 марта 2020

Необходим доступ к REST API с php с помощью cURL. Это ссылка для отдыха:

http://username:password@172.16.59.225:8042/tools/find -d '{"Level":"Study","Expand":false,"Query":{"StudyDate":"20191226-20200324"}}'

как вы видите много "и пробелов.

Я пытался подготовить строку вручную, как это:

$url = "http://172.16.59.225/tools/find -d '{\"Level\":\"Study\",\"Expand\":false,\"Query\":{\"StudyDate\":\"20191226-20200324\"}}'";

and pass password using: curl_setopt($ch, CURLOPT_USERPWD, "username:password");

Я использовал urlencode() и curl_escape и ничего не работает. В то же время эта ссылка отлично работает, используя ее с curl в Linux cmd.

Это выполнимо?

1 Ответ

1 голос
/ 25 марта 2020

Попробуйте, --data или -d параметр должен sends the specified data in a POST request to the HTTP server Источник

$url = 'http://172.16.59.225/tools/find';
$postdata = '{"Level":"Study","Expand":false,"Query":{"StudyDate":"20191226-20200324"}}';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
curl_close($ch);
print_r ($result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...