【发布时间】:2016-05-15 18:06:32
【问题描述】:
我是 cURL 的新手,我通常使用 .NET 或 JQuery 来发布到 Web API,但我需要使用现有的 PHP 实现来发布具有 content-type: application/pdf 的 PDF 到 Web API .
现有实现仅 POST 和接收 JSON 数据,因此非常简单。当我尝试将代码更改为将应用程序/pdf 内容发布到另一个端点时,我不断收到以下错误:
文件类型错误。可接受的内容类型为 application/pdf、text/richtext、text/plain、image/jpeg。
这是我正在使用的代码:
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/pdf'),
$auth_header));
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, file_get_contents('C:\MyFile.pdf'));
$response = curl_exec($curl);
if (!$response) {
$response = curl_error($curl);
}
curl_close($curl);
我已检查该 PDF 是否为有效 PDF,甚至尝试了其他几个 PDF。我还设置了 cURL 选项来编写错误日志,这表明 cURL 正在将内容类型设置为标题中的 application/pdf。
我是否使用了错误的函数从文件中获取 PDF 内容?还是我设置的正文内容错误?我正在调用的 API 有说明 PDF 内容应该发布在正文中的文档,没有提到将其作为参数发布。它还说要在标题中设置 content-type: application/pdf,我已经这样做了。但它没有说其他任何东西,但我认为这应该是一个简单的调用,但也许我对 cURL 的了解不够......
【问题讨论】: