Как я могу опубликовать сообщение в Retrofit2? - PullRequest
0 голосов
/ 07 июня 2018

Этот проект запускается с web server.Когда пользователь нажимает кнопку, он должен отправить сообщение внутри EditText.Я использую Retrofit2 для этого.Программа остановилась, когда я нажал кнопку.

ApiInterface.java

@POST("api/EmergencyNotification/SendNotification")
Call<SendMessageModel>postMessage(@Header("Authorization") String token,
                              //  @Field(("PhotoRequest")) String photoRequest,
                              //  @Field(("Location")) String location,
                                @Field(("MessageBody")) String messageBody);
                                //  @Field(("AnswerValue")) String answerValue);   

В кнопке OnClick эта функция запускается:

protected void postMessage(){
    startProgress();
    String authorization = SessionHelper.getCustomerTokenWithBearer();
   // Loc = lattitude + longitude;
    Call<SendMessageModel> call = ApiService.apiInterface.postMessage(authorization,
            mesaj.getText().toString().trim());

   call.enqueue(new Callback<SendMessageModel>() {
        @Override
        public void onResponse(Call<SendMessageModel> call, Response<SendMessageModel> response) {
            stopProgress();

            if (response.isSuccessful()){

                if (response.body() != null){
                    DialogHelper.showDialogWithOneButton("",response.body().getData());
               }
            }
            else {
                ApiErrorUtils.parseError(response);
            }
        }

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

            stopProgress();
            DialogHelper.showFailedDialog();
        }
    });
}

Ответы [ 2 ]

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

Хорошо.Я решил это сейчас.URL-адрес API был неверным, и я добавил новые @Multipart и @Part вместо @Field.

@POST("api/EmergencyNotification/SendMessage")
  Call<SendMessageModel>postMessage(@Header("Authorization") String token,

                                    @Part(("MessageBody")) String messageBody);
0 голосов
/ 07 июня 2018

Вам не хватает атрибута @FormUrlEncoded, так как вы используете атрибут поля вместо тела

@POST("api/EmergencyNotification/SendNotification")
@FormUrlEncoded
Call<SendMessageModel>postMessage(@Header("Authorization") String token,
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...