Модернизация: выполнение веб-запросов к внутренним API

Я хочу сделать запрос к API моей организации. Запрос содержит заголовки, имя пользователя, пароль и файл cookie для управления сеансом.

Ниже приведен фактический код (в HttpClient), который я хочу переписать с помощью Retrofit. Я слышал, что библиотеки HttpClient устарели или что-то в этом роде, поэтому я выбрал Retrofit. Я ожидаю ответа с кодом состояния 200.

    public static CookieStore cookingStore = new BasicCookieStore();
public static HttpContext context = new BasicHttpContext();
public String getAuth(String login,String password) {
    String resp = null;
    try {
        String url = DOMAIN+"myxyzapi/myanything";
        context.setAttribute(HttpClientContext.COOKIE_STORE, cookingStore);
        HttpClient client = HttpClientBuilder.create().build();
        HttpPost post = new HttpPost(url);
        String log = URLEncoder.encode(login, "UTF-8");
        String pass = URLEncoder.encode(password, "UTF-8");
        String json = "username = "+log+"&password = "+pass+"&maintain=true&finish=Go";
        StringEntity entity = new StringEntity(json);
        post.setEntity(entity); 
        post.addHeader("Content-Type", "application/x-www-form-urlencoded");        
        HttpResponse response = client.execute(post,context);
        resp = EntityUtils.toString(response.getEntity());
        accountPoller();
    } catch(Exception a) {
        log.info("Exception in authentication api:"+a.getMessage().toString());
    }
    return resp;
}

Ниже мой код, где я не могу понять, как передать контекст с запрос. HttpResponse response = client.execute(post,**context**); с помощью дооснащения. Я даже не знаю, правильно ли я сделал свой запрос на модернизацию.

try {

        String log = URLEncoder.encode(login, "UTF-8");
        String pass = URLEncoder.encode(password, "UTF-8");

        RequestBody formBody = new FormBody.Builder()
                .add("username = ", xyz)
                .add("password = ", mypass)
                .add("&maintain = ", "true")
                .add("finish = ", "Go")
                .build();


        String url = www.xyz.com+"myxyzapi/myanything";

        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(url).post(formBody).addHeader("Content-Type", "application/x-www-form-urlencoded").build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()){
                    final String myresp = response.body().string();

                }
            }
        });

    } catch(Exception a) {
        a.getMessage();
    }

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

Hoppeduppeanut 22.03.2019 06:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
55
1

Ответы 1

Вы должны поймать исключение и использовать этот класс. модификация2.HttpException

модернизация2 Класс HttpException

инт код() Код состояния HTTP. Нить сообщение() Сообщение о статусе HTTP. Ответ отклик() Полный ответ HTTP.

проблема в том, что он не возвращает код успеха 200. Можете ли вы помочь мне достичь этого.

khoks 02 22.03.2019 06:27

вы должны отправить мне полный код с учетными данными. Если вы можете сделать это в почтальоне и отправить мне скриншот всего, что добавлено в запрос. Я могу преобразовать его в ретрофит.

Jin Thakur 23.03.2019 00:07

спасибо за своевременные ответы. В любом случае сейчас проблема решена. Просто сделал несколько глупых ошибок.

khoks 02 23.03.2019 12:52

Другие вопросы по теме