Google通讯录API v3 Java客户端库全文搜索无效

时间:2012-11-28 18:45:03

标签: java api

Contacts API v3,组查询参数不支持'q'参数???在Google Contacts API v3中,它明确表示支持它。但是,当我使用谷歌提供的java客户端库时,通过查询中的setFullTextQuery搜索合同组,我得到HTTP状态403 Forbidden。抛出“线程中的异常”主“com.google.gdata.util.ServiceForbiddenException:Forbidden 此服务不支持'q'参数。“

我已下载最新的Java客户端库:GDATA的GData-Java / 1.47.1(gzip)。尝试使用setFullTextQuery方法搜索联系人组。

哪些步骤会重现此问题?

  1. 设置Java示例联系人
  2. 在ContactsExample.java中,在queryEntries方法中,添加一个新行。 myQuery.setFullTextQuery(“你的搜索词在这里”);
  3. 并运行它
  4. 我检查的版本是否正确,它使用的是GData-Version:3.0 如果按原样运行示例java,一切运行正常。但是,我需要搜索联系人。使用'q'参数应该是正确的方法。

    请帮忙。这是库中的错误,还是我需要采用不同的方法来搜索联系人?

    以下日志:

    执行操作:QUERY

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest setPrivateHeader FINER:授权:

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest setHeader FINER:User-Agent:Google-contactsExampleApp-3 GContacts-Java / 3.1.0 GData-Java / 1.47.1(gzip)

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest setHeader FINER:Accept-Encoding:gzip

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest setHeader FINER:GData-Version:3.0

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 罚款:403禁止

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:null:HTTP / 1.1 403 Forbidden

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:X-Frame-Options:SAMEORIGIN

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:Transfer-Encoding:chunked

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 发布者:日期:2012年11月28日星期三17:38:48 GMT

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:到期日:2012年11月28日星期三17:38:48 GMT

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:X-XSS-Protection:1;模式=块

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:Content-Encoding:gzip

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:Content-Type:text / html;字符集= UTF-8

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:服务器:GSE

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:Cache-Control:private,max-age = 0

    2012年11月28日下午12:38:48 com.google.gdata.client.http.HttpGDataRequest执行 FINER:X-Content-Type-Options:nosniff

    线程“main”中的异常com.google.gdata.util.ServiceForbiddenException:Forbidden 此服务不支持'q'参数。

    at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:605)
    at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:564)
    at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:560)
    at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:538)
    at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536)
    at com.google.gdata.client.Service.getFeed(Service.java:1135)
    at com.google.gdata.client.Service.getFeed(Service.java:1077)
    at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:676)
    at com.google.gdata.client.Service.query(Service.java:1237)
    at com.google.gdata.client.Service.query(Service.java:1178)
    at sample.contacts.ContactsExample.queryEntries(ContactsExample.java:406)
    at sample.contacts.ContactsExample.processAction(ContactsExample.java:350)
    at sample.contacts.ContactsExample.main(ContactsExample.java:626)
    

    Java结果:1

2 个答案:

答案 0 :(得分:0)

这里只是一个长镜头,因为你还没有发布任何代码...

您似乎未经过身份验证并设置了执行查询的用户。

即。您可能需要在查询中添加以下内容:

myQuery.addCustomParameter(
    new Query.CustomParameter("xoauth_requestor_id"
        , username)); //where username is the authenticated (probably by OAuth) user

希望我帮助..

答案 1 :(得分:0)

这有效:

https://www.google.com/m8/feeds/contacts/default/full?v=3.0&alt=json&q=john&max-results=10&orderby=lastmodified&sortorder=descending

请注意,v=3.0是全文搜索的必备条件!