您好我正在重构以下curl调用Zend_Http_Client调用。这将使用给定文件向CouchDB数据库发送PUT请求,并为_attachement设置正确的Content-Type。
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');
这引发以下异常: 未知或错误的cURL选项'CURLOPT_HEADER'设置
如何正确设置内容类型?
答案 0 :(得分: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 :(得分:1)
您正在使用CURLOPT_HEADER来设置CURL以报告服务器响应收到的HEADERS,以发送HTTP标头:
<?php
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: $mimeType"));
?>
我根本不知道zend_HHTP_Client,但试试这个:
$adapter->setCurlOption('CURLOPT_HTTPHEADER', array("Content-Type: $mimeType"));