gpt4 book ai didi

java - 在 Android 中使用 google-java-api-client 设置 Google 日历查询参数

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:09 25 4
gpt4 key购买 nike

我正在构建一个 URL 以使用 google-javi-api 访问用户 Google 日历:

CalendarUrl url = CalendarUrl.forEventFeed("accountName", "private", "full");

返回这个 url:

"https://www.google.com/calendar/feeds/user@gmail.com/private/full?prettyprint=true"

我想使用 startMin 和 startMax 参数为此 URL 设置参数,因此 URL 最终看起来像这样:

"https://www.google.com/calendar/feeds/default/private/full?start-min=2011-06-00T00:00:00&start-max=2011-06-24T23:59:59"

我在这方面的所有尝试都失败了,在记录返回的 URL 后,我发现“?”正在替换为“%3F”,& 符号正在替换为“&”

返回的不正确的url是:

"https://www.google.com/calendar/feeds/default/private/full%3Fstart-min=2011-06-00T00:00:00&start-max=2011-06-24T23:59:59"

我很确定我的结果集为空的原因是因为这些字符替换。如何将新参数附加到原始 URL?

**如果您想知道我是如何构建这个 url,我正在使用 CalendarURL来自这个 sample Android implementation of Google Calendar 的类(class).

编辑

更具体地说,在 CalendarURL类,我可以将部分添加到 URL 的“路径”,但我找不到包含查询参数的方法。这个 API 不包括指定参数的方法吗?

最佳答案

使用 google-java-client-api 创建 URL 的正确方法是扩展 GoogleUrl 对象。 (我在这里使用 Google Latitude 作为示例。我创建了一个 GoogleUrl 对象,稍后您将看到它是如何使用的)。

Google URL 对象

  • 您构造一个扩展 GoogleUrl 的 URL 对象
  • 您可以使用@Key 注释在 URL 上注释您想要自定义的参数
  • 您提供一个采用根 url 的构造函数。
  • 使用 pathParts.add 方法将部件添加到上下文

示例 URL 对象如下所示:

public final class LatitudeUrl extends GoogleUrl {

@Key
public String granularity;

@Key("min-time")
public String minTime;

@Key("max-time")
public String maxTime;

@Key("max-results")
public String maxResults;

/** Constructs a new Latitude URL from the given encoded URI. */
public LatitudeUrl(String encodedUrl) {
super(encodedUrl);
}

private static LatitudeUrl root() {
return new LatitudeUrl("https://www.googleapis.com/latitude/v1");
}

public static LatitudeUrl forCurrentLocation() {
LatitudeUrl result = root();
result.pathParts.add("currentLocation");
return result;
}

public static LatitudeUrl forLocation() {
LatitudeUrl result = root();
result.pathParts.add("location");
return result;
}

public static LatitudeUrl forLocation(Long timestampMs) {
LatitudeUrl result = forLocation();
result.pathParts.add(timestampMs.toString());
return result;
}
}

用法

您使用此对象构建 URL,只需填写您的参数(@Key 注释字段),然后执行 build() 方法以获取它的字符串表示形式:

    LatitudeUrl latitudeUrl = LatitudeUrl.forLocation();
latitudeUrl.maxResults="20";
latitudeUrl.minTime="123";
latitudeUrl.minTime="456";

System.out.println(latitudeUrl.build());

输出:

https://www.googleapis.com/latitude/v1/location?max-results=20&min-time=456

关于java - 在 Android 中使用 google-java-api-client 设置 Google 日历查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com