Jersey Client で JavaからAPI連携する


必要なmaven

以下3つが必要

           <groupId>org.glassfish.jersey.core</groupId>
           <artifactId>jersey-client</artifactId>
           <version>2.27</version>

           <groupId>org.glassfish.jersey.media</groupId>
           <artifactId>jersey-media-json-jackson</artifactId>
           <version>2.26</version>

           <groupId>org.glassfish.jersey.inject</groupId>
           <artifactId>jersey-hk2</artifactId>
           <version>2.26</version>

足りないと

java.lang.ClassNotFoundException: org.glassfish.jersey.internal.l10n.LocalizableMessageFactory$ResourceBundleSupplier

こういうわけわかんないエラーでる

実装:POSTで連携する

✩http://localhost:8080/test/api1 のAPIを呼びたい

public void excute(RequestData req) {

        String result = ClientBuilder.newClient()
                // 連携先の決まってるurl
                .target("http://localhost:8080")
                // パス 連携先で変わるところ
                .path("/test/api1")
                //Xml形式でリクエストするかJSON形式でリクエストするか決めるところ   
                // xmlならこれを指定→APPLICATION_XML_TYPE
                .request(MediaType.APPLICATION_JSON_TYPE)
                // データ突っ込む
                //MediaTypeでなんの形式でレスポンス受け取るか指定今回はJSON
                .post(Entity.entity(req, MediaType.APPLICATION_JSON), String.class);

        // 標準出力にレスポンスを表示
        System.out.println(result);

    }