Модифицированный почтовый запрос отправляет нулевой объект - PullRequest
0 голосов
/ 04 июня 2018

У меня проблема с запросом на модификацию @POST, всякий раз, когда я пытаюсь отправить объект из приложения для Android, он в основном отправляет ноль, но когда я делаю это из Почтальона, все идет хорошо.

Вот запрос почтальоначто я отправляю

Address: http://localhost/posts/1/comments/3
{
"title": "Bravo nasiasfaf",
"description": "Samo sloga Srbina spasavaasfsaf"
}

Вот метод для конечной точки

@POST("posts/{postId}/comments/{userId}")
Call<CommentDTO> createComment(@Path("postId") int postId, @Path("userId") int userId, @Body CommentDTO commentDTO);

CommentDTO

public class CommentDTO {

private String title;
private  String description;

public CommentDTO(String title, String description) {
    this.title = title;
    this.description = description;

}
}

Кнопка с прослушивателем для вызова

    final EditText naslov_comm = view.findViewById(R.id.naslov_comm);
    final EditText opis_comm = view.findViewById(R.id.opis_comm);
    objavicom_btn = view.findViewById(R.id.objavicom_btn);

objavicom_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        CommentDTO commentDTO_ala = new CommentDTO(naslov_comm.getText().toString(),
                opis_comm.getText().toString());

        sendNetworkRequest(commentDTO_ala);

        }


    });

Метод сетевого запроса от слушателя кнопки

private void sendNetworkRequest(CommentDTO commentDTO) {

    Retrofit.Builder builder = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create());

    Retrofit retrofit = builder.build();

    RestAPI client = retrofit.create(RestAPI.class);

    Call<CommentDTO> call = client.createComment(id_post, user_pref, commentDTO);

    call.enqueue(new Callback<CommentDTO>() {
        @Override
        public void onResponse(Call<CommentDTO> call, Response<CommentDTO> response) {
            Toast.makeText(getActivity(), "Uspesno ste objavili komentar",
                    Toast.LENGTH_LONG).show();

        }

        @Override
        public void onFailure(Call<CommentDTO> call, Throwable t) {
            Toast.makeText(getActivity(), "Komentar nije prosao",
                    Toast.LENGTH_LONG).show();
        }
    });

Как мне сделать так, чтобы gson и gson создали такую ​​же форму JSON, как в своем запросе почтальона?

1 Ответ

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

Возможно, добавление строки заголовков в ваш класс конечных точек сделает это:

@Headers("Content-Type: application/json")
@POST("posts/{postId}/comments/{userId}") 
Call<CommentDTO> createComment(@Path("postId") int postId, @Path("userId") int userId, @Body CommentDTO commentDTO);

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

...