5

我在某个地方读到 goole 只允许获取。这是否意味着无法将 org.apache.http.client.HttpClient 集成到 google appe 引擎中?

如果没有,是否有使用 org.apache.http.client.HttpClient 在 google app engine 上使用现有库的替代方法?

4

2 回答 2

1

2019 年更新

是的,你确实可以。我刚刚尝试过,它在 Java 8 环境下也能正常工作。

脚步:

  1. 启用billing,否则native HttpURLConnection将不起作用(这也是 Apache HttpClient 的基础)。如果不计费,您只能使用urlfetch2016 年上一篇文章中描述的旧版。

  2. 在 Java 8 环境中是可选的,因为native是默认的

appengine-web.xml

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <url-stream-handler>native</url-stream-handler>
</appengine-web-app>
  1. 编写您的代码,例如:
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
    HttpPost httpPost = new HttpPost("http://myservice.com");
    httpPost.setEntity(new StringEntity(objectMapper.writeValueAsString(input), ContentType.APPLICATION_JSON));
    CloseableHttpResponse response = httpclient.execute(httpPost);
    return objectMapper.readValue(response.getEntity().getContent(), new TypeReference<MyReturnType>() { });
} catch (IOException e) {
    throw new RuntimeException(e);
}
于 2019-05-04T20:41:03.590 回答
0

所以答案不是。您需要使用 google fetch 库。

来自Wayback Machine存档的Google Code 上的 Google App Engine wiki 页面

唯一受支持的 HTTP 传输是基于 Google App Engine SDK 中 URL Fetch Java API 的UrlFetchTransport

不要尝试ApacheHttpTransport,因为它在 Google App Engine 上肯定会失败。

于 2015-03-21T02:10:16.433 回答