Использование PHP для публикации буфера XML на странице HTTPS - PullRequest
0 голосов
/ 22 августа 2010

Я использую php 5.2.9 У меня есть буфер XML, который мне нужно опубликовать на какой-нибудь HTTPS URL.

Как правильно это сделать?Я вижу различные примеры в Интернете, и ни один из них, похоже, не работает для меня: некоторые определяют заголовки cURL следующим образом:

$headers = array(
        "POST " . $page . " HTTP/1.0",
        "Content-type: text/xml;charset=\"utf-8\"",
        "Accept: text/xml",
        "Cache-Control: no-cache",
        "Pragma: no-cache",
        "SOAPAction: \"run\"",
        "Content-length: ".strlen($buffer),
    );

Где $ page содержит запрос на сервере, а $ buffer содержитДанные XML.

Фактический буфер $ отправляется в качестве значения как:

curl_setopt($curl, CURLOPT_POSTFIELDS, $buffer);

Но я не понимаю, как это может работать, поскольку CURLOPT_POSTFIELDS ожидает, что его значение будет массивом ине буфер.

Затем я увидел несколько способов настройки SSL-аспектов вызова:

 curl_setopt($curl, CURLOPT_SSLVERSION,3);

curl_setopt ($ curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt ($ curl, CURLOPT_SSL_VERIFYHOST, 2);Все ли это необходимо?Я видел примеры, в которых также было установлено следующее:

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); 

Может ли кто-нибудь опубликовать полный рабочий пример, объясняющий, что необходимо сделать для отправки буфера XML с помощью cURL на URL-адрес HTTP?

Заранее спасибо

1 Ответ

0 голосов
/ 22 августа 2010

Несколько моментов:

  • Не указывайте метод запроса с другими заголовками.Для этого используйте CURLOPT_CUSTOMREQUEST.
  • Для отправки данных у вас есть два варианта.Вы можете реализовать потоковую оболочку, которая читает из $buffer, которую вы затем открываете с помощью fopen и задаете как CURLOPT_INFILE (конечно, если XML находится на диске, вы можете открыть его напрямую с помощью fopen)или, проще говоря, вы определяете обратный вызов CURLOPT_READFUNCTION.
  • Проверка части узла необходима только в том случае, если вы хотите проверить действительность сертификата сервера (вам следует).
  • Обычная аутентификация необходима, если сервер требует базовой аутентификации.Только ты можешь знать это.
...