2012-01-11 54 views
2

您好我正在重構curl調用Zend_Http_Client調用。這將使用給定文件向CouchDB數據庫發送PUT請求,併爲_attachement設置正確的Content-Type。如何在PUT上使用Zend_Http_Client設置內容類型?

exec(
    'curl -s -X PUT ' . $url ' . 
    '--data-binary @\'' . $filePath . '\' -H "Content-Type: ' . $mimeType . '"', $resultJson, $returnCode 
); 

重構爲一個Zend_Http_Client我有以下幾點:

$adapter = new Zend_Http_Client_Adapter_Curl(); 
$client = new Zend_Http_Client(); 
$client->setAdapter($adapter); 
$client->setUri($url); 
$client->setRawData($filePath); 
$adapter->setCurlOption('CURLOPT_HEADER', "Content-Type: $mimeType"); 

$response = $client->request('PUT'); 

這將引發以下異常: 未知或erroreous捲曲選項 'CURLOPT_HEADER' 設置

我如何設置內容類型是否正確?

回答

2

而不是使用:

$client->setRawData($filePath); 
$adapter->setCurlOption('CURLOPT_HEADER', "Content-Type: $mimeType"); 

我不得不使用:

$client->setRawData(file_get_contents($filePath)); 
$client->setHeaders('Content-Type', $mimeType); 

顯然你不能通過setCurlOption()設置一些CURLOPT_;

$this->_invalidOverwritableCurlOptions = array(
    CURLOPT_HTTPGET, 
    CURLOPT_POST, 
    CURLOPT_PUT, 
    CURLOPT_CUSTOMREQUEST, 
    CURLOPT_HEADER, 
    CURLOPT_RETURNTRANSFER, 
    CURLOPT_HTTPHEADER, 
    CURLOPT_POSTFIELDS, 
    CURLOPT_INFILE, 
    CURLOPT_INFILESIZE, 
    CURLOPT_PORT, 
    CURLOPT_MAXREDIRS, 
    CURLOPT_CONNECTTIMEOUT, 
    CURL_HTTP_VERSION_1_1, 
    CURL_HTTP_VERSION_1_0, 
); 
1

你使用的是用來設置CURL報告服務器收到響應報頭中的CURLOPT_HEADER,發送HTTP標頭:

<?php 

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: $mimeType")); 

?> 

我不知道zend_HHTP_Client可言,但試試這個:

$adapter->setCurlOption('CURLOPT_HTTPHEADER', array("Content-Type: $mimeType")); 
+0

我需要一個Zend_Http_Client – tom 2012-01-11 10:58:06

+0

CURLOPT_HTTPHEADER的解決方案是拋出同樣的異常 – tom 2012-01-11 10:59:25

+0

陣列中的嘗試 - 陣列(「內容類型:$ mime類型」) – Prof83 2012-01-11 11:00:37

相關問題