2017-11-08 14 views
0

私は私がリクエストヘッダを取得する必要があり、次のコードJAVA - 取得HTTPリクエストヘッダ

String jsonText = "some_text_in_json_format"; 
WebTarget target = "some_url/id" 
Response response = target.resolveTemplate("id", id).queryParam("overwrite", false).request(MediaType.APPLICATION_JSON) 
       .header("Authorization", "Basic " + authInfo).put(Entity.json(jsonText)); 

を持っています。 私はHttpServletRequestオブジェクトを持っている場合、それらを取得する方法を知っています。

追加:明示的に提供されているAuthorizationヘッダーに加えて、追加のヘッダーが要求に含まれていますか?

しかし、この場合、私の目標に対処するためのメソッド(WebTargetまたはInvocation.Builderインターフェイス)は見つかりませんでした。

ヒント?

ありがとうございます!

+0

おそらくあなたはまた、クライアントを持っていますか?そこからClientResponseContextを取得してそこからヘッダを取得することができます – David

+0

@Davidこのコードはクライアントアプリケーションを参照しています。認証に加えて、暗黙的に要求に追加する他のヘッダーがありますか?私は私のものではないので、コードをデバッグすることしかできません。だから私は、どのタイプのリクエストがサーバーに送られたか(チェックできない)を正確に知る必要があります。 – Fab

+0

@Fab最新の[answer](https://stackoverflow.com/a/47183662/1426227)をご覧ください。 –

答えて

0

明示的に提供されるAuthorizationヘッダーに加えて、追加のヘッダーが要求に含まれていますか?

はい。あなたの質問に投稿されたコードの場合は、少なくとも以下のヘッダは、あなたの要求に追加されます:

あなたは ClientRequestFilterに使用することができます
  • Host: <host>:<port>
  • Accepts: application/json
  • Content-Type: application/json

要求のヘッダーを取得します。

public class MyClientRequestFilter implements ClientRequestFilter { 

    @Override 
    public void filter(ClientRequestContext requestContext) throws IOException { 

     MultivaluedMap<String, Object> headers = requestContext.getHeaders(); 
     ... 

    } 
} 

その後、あなたのクライアントのインスタンスにフィルタを登録します。

Client client = ClientBuilder.newClient().register(MyClientRequestFilter.class); 
関連する問題