【问题标题】:How to set the content type with Zend_Http_Client on PUT?如何在 PUT 上使用 Zend_Http_Client 设置内容类型?
【发布时间】:2012-02-07 17:37:59
【问题描述】:

您好,我正在重构对 Zend_Http_Client 调用的 curl 调用。这将使用给定文件向 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”

如何正确设置 Content-Type?

【问题讨论】:

    标签: php zend-framework curl couchdb content-type


    【解决方案1】:

    而不是使用:

    $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,
    );
    

    【讨论】:

      【解决方案2】:

      您正在使用 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"));
      

      【讨论】:

      • 我需要 Zend_Http_Client 的解决方案
      • CURLOPT_HTTPHEADER 抛出同样的异常
      • 在数组内尝试 - array("Content-Type: $mimeType")
      • 不幸的是,这没有帮助。
      • 没问题,我找到了解决办法!
      猜你喜欢
      • 2012-03-27
      • 2012-12-29
      • 2023-03-21
      • 2010-12-29
      • 1970-01-01
      • 2016-09-28
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多