каким должен быть заголовок User-Agent для этого вызова? - PullRequest
0 голосов
/ 14 июня 2019

этот фрагмент кода взят из Почтальона. 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());

1 Ответ

0 голосов
/ 15 июня 2019

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

    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 вам необходимо сначала отправить запрос аутентификации. Чтобы автоматически обрабатывать куки-файлы аутентификации, вы можете попытаться добавить 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.

...