如何解决Google自定义搜索API PHP curl发布XML HTTP 411错误
| 我尝试了几种发送带有xml的POST请求的方法,以向我的Google自定义搜索添加注释。我尝试过的每种方法都导致HTTP 411错误(POST请求需要Content-length标头)。这是我当前的代码: <?php
$ch = curl_init();
$url = \'https://www.google.com/accounts/ClientLogin?accountType=HOSTED_OR_GOOGLE&Email=****&Passwd=*****&service=cprose&source=ednovo-classadmin-1\';
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
$authTokenData = curl_exec($ch);
$authTokenArray = explode(\'Auth=\',$authTokenData);
$authToken = $authTokenArray[1];
echo \"got token: $authToken<br>\";
$annotation = $_POST[\'annotation\'];
$label = $_POST[\'label\'];
$href = $_POST[\'href\'];
curl_close($ch);
$data =\'<Batch>\' .
\'<Add>\' .
\'<Annotations>\' .
\'<Annotation about = \"\' . $annotation . \'\">\' .
\'<Label name = \"\' . $label . \'\" />\' .
\'</Annotation>\' .
\'</Annotations>\' .
\'</Add>\' .
\'</Batch>\';
$url = \"http://www.google.com/cse/api/default/annotations/\";
curl_setopt($ch,$url);
$length = strlen($data);
$header = array(\"Authorization: GoogleLogin auth=\" . $authToken,\"Content-Type: text/xml\",\"Content-Length: \" . $length);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,TRUE);
$result = curl_exec($ch);
if ( curl_errno($ch) ) {
$result = \'cURL ERROR -> \' . curl_errno($ch) . \': \' . curl_error($ch);
} else {
$returnCode = (int)curl_getinfo($ch,CURLINFO_HTTP_CODE);
switch($returnCode){
case 200:
break;
default:
$result = \'HTTP ERROR -> \' . $returnCode;
break;
}
}
echo $result;
?>
我对此表示感谢。
谢谢。
感谢您的帮助,因为这是我的问题之一。但是,即使使用了init并更改了标头,它仍然给我同样的HTTP 411错误。你还有其他建议吗?谢谢你
解决方法
您在第一个请求ClientLogin的请求后呼叫了“ 1”,但是您忘记了对第二个请求再次进行了“ 2”。添加,您不需要放置Content-Length标头字段; curl在设置发布字段/数据时自动填充。您也可以尝试在“授权”字段的auth值上添加引号。
$header = array(\'Authorization: GoogleLogin auth=\"\'. $authToken.\'\"\',\"Content-Type: text/xml\");
发布代码时,请务必删除您的Google Apps登录凭据。
, 这不是[0]吗?也许不是,只是一个建议。
$authToken = $authTokenArray[1];
仍在努力为您解决问题....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。