PHP сделать запрос с заголовком - PullRequest
0 голосов
/ 28 сентября 2011

Используя php, мне нужно вызвать веб-сервис, передав конкретные данные в заголовке HTTP и конкретные данные в фактической строке POST. Однако, когда я получаю доступ к этой странице, страница пытается загрузить. Если я открою скачанный файл, он содержит только мои два! Из того, что я понимаю, ответ должен быть отправлен обратно.

Правильно ли я "отправляю" заголовки на URL, указанный ниже, или я должен делать это по-другому?

Спасибо!

<?php 
    header("Content-Type: application/x-www-form-urlencoded");
    header("Content-Length: ---");
    header("Authorization: Basic -------");

try{

    $xml = "------";

    $url = 'https://---.com/---/---?site_id=---&service_name=---';

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_POST, 1);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

    curl_close($ch);

    echo "!" . $response . "!";

} catch (Exception $e) {
    print_r($e);
}

?>

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Нет. Вызов PHP header() выдаст заголовки, которые влияют на соединение между веб-сервером и ВАШИМ браузером. это никак не влияет на соединение, которое сервер создает с помощью curl.

По умолчанию curl автоматически заполнит соответствующие заголовки типа контента, когда вы скажете ему сделать POST, и достаточно умен, чтобы изменить тип контента, если вы также выполняете загрузку файла. Чтобы указать учетные данные для входа, используйте CURLOPT_USERPWD (подробности см. http://php.net/curl_setopt).

0 голосов
/ 28 сентября 2011

Похоже, это проблема https, которую можно решить с помощью:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Cheers!

...