【发布时间】:2011-09-06 19:08:37
【问题描述】:
我正在创建一个 Android 应用程序并尝试通过 Google APIs 客户端使用 Google Places API。我一直在关注这个例子: http://ddewaele.blogspot.com/2011/05/introducing-google-places-api.html
我在创建用于创建 HTTP 请求工厂的 HTTP 传输对象时遇到问题。一切都在 Eclipse 中编译得很好,但是当我在手机上运行时进行调试时,我在这里的第一行得到了一个 classnotfound:
HttpTransport transport = new ApacheHttpTransport();
HttpRequestFactory httpRequestFactory = createRequestFactory(transport);
公共静态 HttpRequestFactory createRequestFactory(HttpTransport 传输) {
return transport.createRequestFactory(new HttpRequestInitializer() {
@覆盖
公共无效初始化(HttpRequest 请求)抛出 IOException {
request.headers.authorization = "...";
}
});
}
根据 HTTP 传输类的 JavaDoc:
安卓:
- 从 SDK 2.3 开始,强烈推荐使用 com.google.api.client.javanet.NetHttpTransport。他们的 Apache HTTP 客户端 实施没有得到很好的维护。
- 对于 SDK 2.2 及更早版本,请使用 com.google.api.client.apache.ApacheHttpTransport。 com.google.api.client.javanet.NetHttpTransport 不推荐,因为有些bug Android SDK 实现 HttpURLConnection。
我在 2.2 上运行,所以我尝试使用 ApacheHTTPTransport。我也尝试过 NetHTTPTransport,但我得到了同样的结果(classnotfound)。
有什么想法/例子吗?
谢谢!
【问题讨论】:
-
使用 ApacheHTTPTransport 是可以的。你能发布你看到的堆栈跟踪吗?
-
如果您正在构建一个需要与所有 Android SDK 一起工作的 Android 应用程序,只需调用 AndroidHttp.newCompatibleTransport() ,它将根据 Android SDK 级别决定使用这两个。
标签: android web-services httpwebrequest google-api-java-client