BETA

【Java】Jerseyを使ってAPIをpostで叩く

投稿日:2018-10-29
最終更新:2018-10-29

https://gjevsia2gqammq7a.qrunch.io/entries/k7GTgTvWyQ6RPOrX と書いてちょっと後

おえらいさん「2.xにするで。環境は拾った」

うせやろ

    public static String getResponseByPostRequestJersey(String urlStr,String request) {
        //クライアント生成
        LogUtil.info("CallingPOST URL:" + urlStr);
        Client client = ClientBuilder.newClient();
        Entity<String> entity = Entity.entity(request, MediaType.APPLICATION_JSON);
        String result = "";
        try {
            //結果取得
            result = client.target("urlStr") //URL ほんとはpassでAPIを別わけしたほうがいいらしいね
                    .request() //リクエストとかする
                    .post(entity,String.class); //ここでリクエストボディと一緒にpostする
        }catch(BadRequestException | NotFoundException e) {
            LogUtil.error("Connection failed!" + e.getResponse().readEntity(String.class),e);
            throw e;
        }
        return result;
    }

うごくやんけ!!!!!!

↓HTTPConnection版

    public static String getResponseByPostRequest(String urlStr,String request) throws Exception {
        StringBuffer result = new StringBuffer();
        try {
            //コネクション取得
            LogUtil.info("CallingPOST URL:" + urlStr);
            URL url = new URL(urlStr);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            //リクエスト生成
            con.setDoOutput(true);
            //POST
            con.setRequestMethod("POST");
            //JSONデータを指定
            con.setRequestProperty("Content-Type", "application/JSON; charset=utf-8");
            //POSTデータの長さを設定
            con.setRequestProperty("Content-Length", String.valueOf(request.length()));
            //JSONデータ流し込み
            OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
            out.write(request);
            out.flush();
            //接続
            con.connect();

            //HTTPレスポンスコード取得
            final int status = con.getResponseCode();
            if(status == HttpURLConnection.HTTP_OK) {
                //通信成功時テキスト取得
                final InputStream in = con.getInputStream();
                String encoding = con.getContentEncoding();
                if(encoding == null) {
                    LogUtil.warn("Encode is not defined. Use UTF-8");
                    //デフォルトはUTF-8
                    encoding = "UTF-8";
                }
                //リーダー生成
                final InputStreamReader inReader = new InputStreamReader(in,encoding);
                final BufferedReader bufReader = new BufferedReader(inReader);
                String line = null;
                LogUtil.info("loading InputStream...");
                //テキスト読み込み
                while((line = bufReader.readLine()) != null) {
                    result.append(line);
                }
                //逆順にStreamを閉じる
                bufReader.close();
                inReader.close();
                in.close();
            }else {
                //通信失敗
                LogUtil.error("Connection failed!" + status + " " + con.getResponseMessage());
            }
        }catch(    Exception e){
            LogUtil.error(e);
            throw e;
        }
        LogUtil.info("load success! result:\n" + result);
        return result.toString();
    }

短いやんけ!!!!!!!!!

jersey2.x is GOD

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@yutaNextam'の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!