我正在尝试使用以下代码将一些JSON发布到具有cURL的Web服务:
$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_URL, 'http://index.yolink.com/index/define?o=json&ak=APIKEY'); curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/json')); $data = array( 'ignore-robots' => 'false', 'language' => 'english', 'crawl-delay' => '0', 'depth' => '3', 'root' => array('url' => 'http://bartleby.com/') ); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); $result=curl_exec($ch); var_dump($result);
我得到以下回报:
string(282)“ HTTP / 1.1 200 OK服务器:Apache-Coyote / 1.1 Access-Control- Allow-Origin:*内容类型:text / plain内容长度:120日期:2011年3月18日,星期五:19:03:23 GMT {“ code”:“ error.indexdefinition.invalid”,“ message”:“为/ define提供的内容无效。错误:文件过早结束。.“}”
我发现这个博客帖子这似乎是相关的- 它似乎被发送text/plain,即使我指定ContentType的CURLOPT_HTTPHEADERS作为application/json。但是添加http_build_query并没有帮助。
text/plain
ContentType
CURLOPT_HTTPHEADERS
application/json
http_build_query
在此先感谢您的帮助!
我相信应该HTTPHEADER,不是HTTPHEADERS。
HTTPHEADER
HTTPHEADERS
http://php.net/manual/zh/function.curl- setopt.php