0

为什么它返回此输出“错误:请求的 URL 返回错误:400”而不是发送请求

$headers = array("授权:GoogleLogin auth= " . $this->auth . "",
                      "GData 版本:2.0",
                      "传输编码:分块",
                      “内容类型:应用程序/原子+xml”
                      );

$xmlstr = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/\"DU4ERH47eCp7ImA9WxRVEkQ.\"'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/acl/2007#accessRule'/> <gAcl:scope type='user' value='$email_id'></gAcl:scope> <gAcl:role value='http://schemas.google.com/gCal/2005#read'></gAcl:role> </entry>"; $url = "http://www.google.com/calendar/feeds/$cal_id/acl/full/user%3A".urlencode($email_id).""; curl_setopt($this->curl, CURLOPT_URL, $url); curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $xmlstr); curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($this->curl, CURLOPT_AUTOREFERER, true); curl_setopt($this->curl, CURLINFO_HEADER_OUT, false); curl_setopt($this->curl, CURLOPT_VERBOSE, true); curl_setopt($this->curl, CURLOPT_FAILONERROR, true); curl_setopt($this->curl, CURLOPT_COOKIESESSION, true); curl_setopt($this->curl, CURLOPT_HEADER, 0); curl_setopt($this->curl, CURLOPT_UNRESTRICTED_AUTH, true); $response = curl_exec($this->curl);
4

1 回答 1

1

请注意 PHP API 使用的是 V1,当然是最旧的版本 :( 因此,我们用于更新 ACL 的 xml 与 V2 上的指南略有不同。

我正在使用的是:

<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007' >
          <category scheme='http://schemas.google.com/g/2005#kind'
            term='http://schemas.google.com/acl/2007#accessRule'/>

请注意我不要使用“gd:etag”元素。

其余的 xml 对你来说是一样的。另一个建议是将您的 url 更改为HTTPS,而不是HTTP,并添加 'xoauth_requestor_id=' 。urlencode($USER) 如果需要。

然后你准备好了,让我们知道它是否有帮助。

于 2012-04-12T03:16:04.517 回答