WedX - журнал о программировании и компьютерных науках

Добавление заголовка в запрос на переоборудование

Я работаю над приложением для Android, подключенным к VPN.

Я отправляю запрос на модернизацию api отдыха:

private void login_Request(){


        Log.d("ESTOY EN LOGIN REQUEST","ESTOY EN LOGIN REQUEST");
        LoginRequest loginRequest = new LoginRequest("HALEJANDRO","ALEJANDR0123","password","19.3509","-99.1566");

        Call <LoginRequest> call = jsonPlaceHolderApi.createLoginReques(loginRequest);
        call.enqueue(new Callback<LoginRequest>() {
            @Override
            public void onResponse(Call<LoginRequest> call, Response<LoginRequest> response) {


                Log.d("ESTOY EN LOGIN REQUEST","ESTOY EN LOGIN REQUEST rsponse "+response);


                if (!response.isSuccessful()) {
                    textViewResult.setText("Code: " + response.code());
                    return;
                }

                List<Login> login = (List<Login>) response.body();

                for (Login loginResponse : login ){
                    String content = "";
                    content += "Access Token: " + loginResponse.getAccess_topken() + "\n";
                    content += "Token Type: " + loginResponse.getToken_type() + "\n";


                    textViewResult.append(content);

                }

            }

            @Override
            public void onFailure(Call<LoginRequest> call, Throwable t) {

            }
        });
    }

Теперь мне нужно добавить заголовок к запросу.

Заголовок должен быть следующим:

Content-Type=application/x-www-form-urlencoded

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

РЕДАКТИРОВАТЬ

Это интерфейс:

import java.util.List;

импортный retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.Headers; import retrofit2.http.POST;

public interface JsonPlaceHolderApi {

    @GET("posts")
    Call<List<Post>> getPosts();

    @POST("token")
    @Headers("Content-Type:application/x-www-form-urlencoded")
    Call <LoginRequest>createLoginRequest(@Body LoginRequest loginRequest);
}

ИЗМЕНИТЬ ПОЧТОВЫЙ ЗАПРОС

Часть 1

введите описание изображения здесь

Часть 2

введите описание изображения здесь

Часть 3.

введите описание изображения здесь

18.03.2020

Ответы:


1

Вы можете закодировать любое значение заголовка следующим образом

@POST("auth")
@Headers("Any value")
fun createLoginRequest(@Body credentials: Credentials): Observable<Response<User>>

Для получения дополнительной информации см. эту ссылку

В вашем случае запрос x-www-form-urlencoded должен обрабатываться как в this пример:

public interface TaskService {  
    @FormUrlEncoded
    @POST("tasks")
    Call<Task> createTask(@Field("title") String title);
}
18.03.2020
  • Спасибо. Я включил ваше предложение в свой интерфейс следующим образом: @POST (токен) @Headers (Content-Type: application / x-www-form-urlencoded) Вызов ‹LoginRequest› createLoginRequest (@Body LoginRequest loginRequest); 18.03.2020
  • Но я получаю сообщение об ошибке от API: Response {protocol = http / 1.1, code = 400, message = Bad Request, url = 10.128.0.2:5000/token 18.03.2020
  • Я проверяю заголовок и параметры с помощью клиента Rest API, например Postman, и он работает с тем же заголовком и параметрами. 18.03.2020
  • Обычно 400 происходит, когда отправляемая вами полезная нагрузка не та, которую ожидает сервер. Как выглядит ваш объект LoginRequest? 18.03.2020
  • Я знаю, поэтому я проверяю ключи и значения параметров с помощью Postman, и они работают в Postman 18.03.2020
  • Можете ли вы поделиться своими настройками почтальона? Когда вы говорите параметры, ключи и значения, вы имеете в виду полезную нагрузку Json? 18.03.2020
  • Добавлены скриншоты. 18.03.2020
  • В порядке. Итак, в вашем случае ваша полезная нагрузка - это Json, а не текст. Аннотация @Body преобразует ваш POJO в его представление Json. Если у вас нет доступа к коду сервера, вам придется изменить запрос. Эта ссылка поможет вам: futurestud.io/tutorials/retrofit-send-data- form-urlencoded. Я тоже обновлю свой ответ. 18.03.2020
  • Теперь, когда я изменил код, я получаю новые сообщения об ошибках. Мне нужно изменить все вызовы, затем использование FormUrlEncoded заставляет меня полностью удалить тег Body, а также полный запрос Call ‹LoginRequest› call = jsonPlaceHolderApi.createLoginReques (loginRequest); 18.03.2020
  • Вы можете помочь мне с кодом, который нужно изменить, чтобы включить все параметры и заголовок? 18.03.2020
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]