使用PHP将XML缓冲区发布到HTTPS页面

时间:2010-08-22 14:52:18

标签: php xml post curl https

我使用的是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数据。

实际的$ buffer作为值发送:

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"); 

有人可以发布一个完整的工作示例来解释为了使用cURL将XML缓冲区发布到HTTP URL需要做些什么吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

几点:

  • 不要使用其他标头指定请求方法。请使用CURLOPT_CUSTOMREQUEST
  • 要发送数据,您有两个选择。您可以实现从$buffer读取的流包装器,然后使用fopen打开并提供CURLOPT_INFILE选项(当然,如果XML在磁盘上,您可以打开它直接使用fopen),或者更简单地说,您定义CURLOPT_READFUNCTION回调。
  • 只有在您想要检查服务器证书的有效性时才需要验证对等部分(您应该)。
  • 如果服务器需要基本身份验证,则必须进行基本身份验证只有你能知道。