2017-01-26 12 views
0

У меня есть следующие Curl, что я хочу, чтобы преобразовать в Java-код:Преобразовать Curl звоните в Java

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

В вызове выше, JSESSIONID печенье отвечает за убедившись, что сервер идентифицирует вызов. Я придумал следующий код 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

Вы пробовали посмотреть файлы своего веб-сервера? Скрыл HTTP-трафик по интерфейсу? Иногда, когда такие вещи терпят неудачу, это может быть очень тонкое, что проявляется в обнюханных заголовках, которые сообщают вам, какой флаг или функцию вам нужно установить. Можете ли вы обновить свой вопрос с помощью отправленного пакета curl HTTP и отправленного пакета Java? – clearlight

ответ

2

Вы используете Set-Cookie (который исходит от сервера в заголовке ответа), тогда как он должен быть только Cookie: (идет от клиента в заголовке запроса).

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

 Смежные вопросы

  • Нет связанных вопросов^_^