каким должен быть заголовок User-Agent для этого вызова?

этот фрагмент кода взят из Postman. cURL, взятый у почтальона, отлично работает, а код Java, сгенерированный почтальоном, дает ответ 200 для конкретного вызова. но тела ответа нет. каким должен быть заголовок пользовательского агента? Нужно ли мне использовать этот токен почтальона и в моем Java-коде? Нужно ли добавлять дополнительные заголовки? Моя цель - получить некоторые данные из этого вызова GET.

    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
            .url("http://blahblah=60041441&attributes=blah,blah,blah")
            .get()
            .addHeader("User-Agent", "PostmanRuntime/7.13.0")
            .addHeader("Accept", "*/*")
            .addHeader("Cache-Control", "no-cache")
            .addHeader("Postman-Token", "7af03a15-blah,364c160f-92d7-459f-b261-4993801944a7")
            .addHeader("Host", "blahblah.na.blah.net:9081")
            .addHeader("cookie", "someURL=1800; com.ibm.isim.lastActivity=blahblahToekn; JSESSIONID=blahblahblah:1ajblahi8; LtpaToken2=blahblahbalah")
            .addHeader("accept-encoding", "gzip, deflate")
            .addHeader("Connection", "keep-alive")
            .addHeader("cache-control", "no-cache")
            .addHeader("User-Agent", "postman")
            .build();

    okhttp3.Response response= client.newCall(request).execute();
    System.out.println(response.body().toString());

person senura    schedule 14.06.2019    source источник


Ответы (1)


Предположим, что для простого запроса на получение вполне подойдет следующее, все остальные детали можно опустить:

    Request request = new Request.Builder()
            .url("http://blahblah=60041441&attributes=blah,blah,blah")
            .get()
            .build();

Большинство заголовков (например, user-agent, accept-encoding и т. д.) будут автоматически добавлены клиентом OkHttp, поэтому вы можете безопасно удалить их из запроса:

            .addHeader("User-Agent", "PostmanRuntime/7.13.0")
            .addHeader("Host", "blahblah.na.blah.net:9081")
            .addHeader("accept-encoding", "gzip, deflate")
            .addHeader("Cache-Control", "no-cache")
            .addHeader("Connection", "keep-alive")
            .addHeader("cache-control", "no-cache")
            .addHeader("User-Agent", "postman")

Поскольку / является подстановочным знаком, предположим, что вы также можете его пропустить.

            .addHeader("Accept", "*/*")

Если ваша конечная точка требует аутентификации, предположим, что перед отправкой этого конкретного запроса Get вам нужно сначала отправить запрос аутентификации. Чтобы автоматически обрабатывать файлы cookie аутентификации, вы можете попробовать добавить CookieJar в свой клиент, поэтому их также можно опустить (предположим, что имена заголовков были каким-то образом изменены, кстати?):

            .addHeader("Postman-Token", "7af03a15-blah,364c160f-92d7-459f-b261-4993801944a7")
            .addHeader("cookie", "someURL=1800; com.ibm.isim.lastActivity=blahblahToekn; JSESSIONID=blahblahblah:1ajblahi8; LtpaToken2=blahblahbalah")

Вы также можете проверить ответы на этот вопрос о способах добавления CookieJar.

person Dmitri Korobtsov    schedule 15.06.2019