我可以在谷歌应用引擎中使用org.apache.http.client.HttpClient吗?

时间:2013-05-07 15:48:44

标签: java google-app-engine http

我读到了goole只允许获取的内容。这是否意味着在google appe引擎中集成org.apache.http.client.HttpClient是不可能的?

如果没有,是否可以在谷歌应用引擎上使用org.apache.http.client.HttpClient使用现有的库?

2 个答案:

答案 0 :(得分:0)

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

Google App Engine wiki page on Google Code归档的Wayback Machine

  

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

     

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

答案 1 :(得分:0)

更新2019

是的,的确可以。我刚刚尝试过,它在Java 8环境中可以正常工作。

步骤:

  1. 启用计费,否则native HttpURLConnection不起作用(这也是Apache HttpClient的基础)。如果不付费,则只能使用旧版urlfetch,如2016年以前的文章所述。

  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);
}