Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can i use org.apache.http.client.HttpClient in google app engine?

I read somwhere that goole just allowed only fetch. Does that mean it's impossible to integrate org.apache.http.client.HttpClient in google appe engine ?

If not, are there an alternative for using existing librairies using org.apache.http.client.HttpClient on google app engine ?

like image 587
mcbjam Avatar asked Nov 12 '22 05:11

mcbjam


1 Answers

Update 2019

Yes, you can, indeed. I just tried, it works without fail with the Java 8 environment.

Steps:

  1. Enable billing, otherwise the native HttpURLConnection won't work (which is also the basis of the Apache HttpClient). Without billing you can only use the legacy urlfetch as described in previous post from 2016.

  2. Optional in Java 8 environment, since native is the default

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. Write your code, e.g.:
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);
}
like image 179
kavai77 Avatar answered Nov 15 '22 11:11

kavai77