2017-01-26 5 views
0

に呼び出すカールI私はJavaコードに変換する次のcURLがあります。上記の呼び出しで変換は、Java

curl -i -b 'JSESSIONID=ekl23l2-3321-1930-b889-kelwek23b8v9; Path=/; HttpOnly' http://127.0.0.1:8080/api/library 

は、JSESSIONID Cookieはサーバーがコールを認証することを確認する責任があります。私は次のJavaコードを考え出した:

CloseableHttpClient httpClient = HttpClientBuilder.create().build(); 
    HttpGet httpGet = new HttpGet("http://127.0.0.1:8080/api/library"); 
    httpGet.addHeader("Set-Cookie","JSESSIONID=ekl23l2-3321-1930-b889-kelwek23b8v9; Path=/; HttpOnly"); 
    HttpResponse httpResponse = httpClient.execute(httpGet); 
    BufferedReader rd = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); 
    StringBuffer result = new StringBuffer(); 
    String line = ""; 
    while ((line = rd.readLine()) != null) { 
     result.append(line); 
    } 
    JSONObject o = new JSONObject(result.toString()); 
    rd.close(); 
    httpClient.close();  

しかし、これはサーバが不正なアクセスを訴えているので私にとっては役に立たない。この応答は、ユーザーが許可されていない場合に発生します。つまり、JSESSIONIDが正しく設定されていないことを意味します。これがcURLをJavaに変換する適切な方法であれば誰でもコメントできますか?

+0

Webサーバーのログファイルを探しましたか?インターフェイス上でHTTPトラフィックをスヌーピングしましたか?そのようなことがうまくいかないときは、設定しなければならないかもしれないフラグや機能を知らせる、盗聴されたヘッダーに現れる非常に微妙なものになることがあります。あなたは送信されたカールHTTPパケットとJavaパケットが送信されたあなたの質問を更新できますか? – clearlight

答えて

2

Set-Cookie(これは応答ヘッダーのサーバーからのものですが)はCookie:(要求ヘッダーのクライアントからのもの)にする必要があります。

httpGet.addHeader("Cookie","JSESSIONID=ekl23l2-3321-1930-b889-kelwek23b8v9; Path=/; HttpOnly");