2016-03-25 27 views
0

シンプルなAPIを作成しました。私はPostManでテストしたように動作しています。私はスタンドアロンのJavaアプリケーションでこれを消費したいと思います。私が見つけた1つの解決策はジャージーを使用することです。私の目的のために、私はちょうど取得要求を行う必要があります。ここで私はこれまで持っているものですが、私はちょうど404不正な要求を取得しています:Jerseyでヘッダー認証を追加する

package apitest; 

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.MediaType; 

public class Apitest { 

    public static void main(String[] args) { 

    Client client = ClientBuilder.newClient(); 

    WebTarget target=client.target("http://188.166.152.46/task_manager/v1/tasks"); 

    System.out.println(target.request(MediaType.APPLICATION_JSON).get(String.class)); 

    } 

} 

私もヘッダに認証を追加する必要があるので、これは動作しないはずです。私はそれが "APIキーが不足"を返すと期待します。

あなたは私が間違ったことを見ることができますか?テストAPIが起動しています。また、ヘッダーにどのように認可を追加するのですか?ジャージーではないならば、馬鹿さえも従うことができるドキュメンテーションに適していて使いやすいものは何か知っていますか?

答えて

0

コードが動作しています... SyncInvoker::get(java.lang.Class)メソッドはこの場合例外をスローします。あなたは例外をキャッチし、応答を印刷することができます。

Client client = ClientBuilder.newClient(); 
WebTarget target=client.target("http://188.166.152.46/task_manager/v1/tasks"); 
try{ 
    target.request(MediaType.APPLICATION_JSON).get(String.class); 
} catch (WebApplicationException ex) { 
    Response response = ex.getResponse(); 
    System.out.println(response.getStatusInfo() + "(" + response.getStatus() + ")"); 
    System.out.println(response.readEntity(String.class)); 
} 

あなたは例外をキャッチするために嫌いならば、あなたが失敗した要求の場合にはResponseを返しSyncInvoker::get()、使用することができますあまりにも(HTTPステータスを= 2xxの!) :ヘッダを追加するには

Client client = ClientBuilder.newClient(); 
WebTarget target=client.target("http://188.166.152.46/task_manager/v1/tasks"); 
Response response =target.request(MediaType.APPLICATION_JSON).get(); 
System.out.println(response.getStatusInfo() + "(" + response.getStatus() + ")"); 
System.out.println(response.readEntity(String.class)); 

Invocation.Builderを使用します。

Invocation.Builder builder = client 
     .target("http://188.166.152.46/task_manager/v1/tasks") 
     .request(MediaType.APPLICATION_JSON) 
     .header(HttpHeaders.AUTHORIZATION, "Bearer apikey"); 
Response response = builder.get(); 

このようなものは章に記載されています。

+0

私はあなたのサーバーが望んでいるか分からない:)たぶん彼は承認ヘッダーを望まないのでしょうか?おそらくこのようなものです: '.header(" X-API-KEY "、" 1 ")'ですが、サーバのドキュメントをチェックする必要があります... –

+0

Invocation.Builderを試してみてください。 – kev002

+0

このメソッドを使用します:https://jersey.java.net/apidocs/latest/jersey/org/glassfish/jersey/client/JerseyInvocation.Builder.html#get(java.lang.Class)BuilderはSyncInvokerを実装しています...最初のコードsnippeltに示されているように –

関連する問題