我读到了goole只允许获取的内容。这是否意味着在google appe引擎中集成org.apache.http.client.HttpClient是不可能的?
如果没有,是否可以在谷歌应用引擎上使用org.apache.http.client.HttpClient使用现有的库?
答案 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)
是的,的确可以。我刚刚尝试过,它在Java 8环境中可以正常工作。
步骤:
启用计费,否则native
HttpURLConnection
不起作用(这也是Apache HttpClient的基础)。如果不付费,则只能使用旧版urlfetch
,如2016年以前的文章所述。
在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>
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);
}