LoginSignup
2
1

More than 5 years have passed since last update.

JavaのGoogleHttpClientを使ってみた

Posted at
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.UrlEncodedContent;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.JsonObjectParser;
import com.google.api.client.json.jackson2.JacksonFactory;
import lombok.Data;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Main {

    static JsonFactory JSON_FACTORY = new JacksonFactory();
    static HttpRequestFactory httpRequestFactory = (new NetHttpTransport()).createRequestFactory();

    public static void main(String[] args) throws IOException {
        Map<String, Object> params = new HashMap<>();
        params.put("id", 1234);

        String url = "http://127.0.0.1:8080/user";
        User map = postHttpRequest(url, params, User.class);
        System.out.println(map);
    }

    private static <T> T postHttpRequest(String url, Map<String, Object> params, Class<T> clazz) throws IOException {
        HttpRequest req = httpRequestFactory.buildPostRequest(
                new GenericUrl(url),
                new UrlEncodedContent(params));
        req.setParser(new JsonObjectParser(JSON_FACTORY));

        String json = req.execute().parseAsString();
        return new ObjectMapper().readValue(json, clazz);
    }

    @Data
    public static class User {
        private String id;
    }
}

書いてみました。Googleのやつはシンプルだが、Postのサンプルが少なく感じました。

req.execute().parseAs(Map.class)

的なことが出来るので、クラス渡せばうまく行くかと思ったら、Mapは出来たが普通のvoとかは出来なかった。。

なので、jacksonを使った。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1