JerseyClientで認証
Jerseyを使用したAPIのテストに使っていたJerseyClientは通常のHTTPクライアントとしても
便利なことに気づいたのでテストに使ってみる。
認証が必要な場合があったので自分用メモ
Basic認証を使う場合
// クライアント生成 ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); // Basic認証の設定 Client. addFilter (new HTTPBasicAuthFilter ("USER_ID", "PASSWORD")); // Formの設定 Form form = new Form(); form.add("title", "タイトル"); form.add("comment", "コメント"); // リクエスト送信 WebResource wr = client.resource("URL"); ClientResponse response = war. post (ClientResponse. class, form);
セッションを使う場合
// クライアント生成 ClientConfig config = new DefaultClientConfig(); Client client = Client. creates (config); // Cookieを扱うフィルタを設定 client.addFilter(new ClientFilter() { private ArrayList<Object> cookies; @Override public ClientResponse handle(ClientRequest request) { if (cookies != null) { request.getHeaders().put("Cookie", cookies); } ClientResponse response = getNext().handle(request); if (response.getCookies() != null) { if (cookies == null) { cookies = new ArrayList<Object>(); } cookies.addAll(response.getCookies()); } return response; } }); // ログイン Form formLogin = new Form(); formLogin.add("userid", "USER_ID"); formLogin.add("password", "PASSWORD"); WebResource wrLogin = client.resource("LOGIN_URL"); ClientResponse resLogin = wrLogin.post(ClientResponse.class, formLogin); // Formの設定 Form form = new Form(); form.add("title", "タイトル"); form.add("comment", "コメント"); // リクエスト送信 WebResource wr = client.resource("URL"); ClientResponse response = wr.post(ClientResponse.class, form);
参考) java - Jersey Client: Adding Cookies to Request - Stack Overflow