Дооснащение сообщения пустыми данными - PullRequest
0 голосов
/ 03 июня 2018

Я новичок в модернизации.Я просто добавляю строку в свою базу данных с использованием модернизации, но я использовал параметры поля в своем интерфейсе API, как этот.

Call<String> matchWith(@Field("fbid") String fbid, @Field("matchwith") String matchwith);

Трудно писать для больших объектов, поэтому я решил использовать аннотацию @Body.Но теперь его размещение пустой строки / объекта в моей базе данных MySQL.(С аннотацией @Field в интерфейсе API мой код вставляет данные правильно)

Вот мой код

@POST("/insertuser.php")
Call<User> postUser(@Body User user);



Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://myurl.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    Connect connect = retrofit.create(Connect.class);

    Call<User> call = connect.postUser(user);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {

        }

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

        }
    });

В моем классе объектов я использовал @SerializedName и @Expose до сих пор дооснащениявставляет пустое Я пытался только с @SerilizedName и просто с @Expose, после этого я ничего не использовал, но я получил тот же результат.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient.Builder httpClient=new OkHttpClient.Builder();
        httpClient.addInterceptor(logging);**


        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(httpClient.build())
                    .build();
        }

Теперь вы можете видеть, правильно ли вы отправляете правильные данные и ответы сервера, в противном случае ищите проблему на сервере

0 голосов
/ 03 июня 2018

Существует разница между аннотациями @Field и @Body.Ваш API может принимать данные только как form-data.Вот почему ваши данные рассматриваются как пустые данные, когда вы отправляете их через тело запроса, то есть, используя аннотацию @Body.

Вы можете изменить свой веб-API, чтобы принимать данные в качестве тела запроса, а затем использовать их по мере использования.

Дополнительная информация

...