簡體   English   中英

使用PHP將XML緩沖區發布到HTTPS頁面

[英]Using PHP to post an XML buffer to an HTTPS page

我正在使用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 URL的XML緩沖區需要執行的操作嗎?

提前致謝

幾點:

  • 不要使用其他標頭指定請求方法。 為此使用CURLOPT_CUSTOMREQUEST
  • 要發送數據,您有兩個選擇。 您可以實現一個流包裝器,該包裝器從$buffer讀取,然后使用fopen並提供CURLOPT_INFILE選項(當然,如果XML在磁盤上,則可以使用fopen直接打開它),或者更簡單地,您可以定義一個CURLOPT_READFUNCTION回調。
  • 僅當您想檢查服務器證書的有效性(您應該)時,才需要對等驗證部分。
  • 如果服務器需要基本認證,則必須進行基本認證。 只有你知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM