Как я могу получить строковый ответ от Laravel с модификацией в Android? - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу отправить данные на laravel и получить ответ от строки с сервера, но я получил

500 Внутренняя ошибка сервера

Что не так с моим кодом?

Дооснащение:

 @POST("/saveInfo")
Call<String> sendInfo(
        @Query("name") String name,
        @Query("family") String family,
        @Query("age") String age

во фрагменте:

 public   void saveInfo(String name,String  family,String age){
    Call<String> call = planApi.sendInfo(name,family,age);
    call.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, retrofit2.Response<String> response) {
            if (response.isSuccessful()) {
                try {
                    if(response.body()=="success")
                        Toast.makeText(view.getContext(), "saved successfully ", Toast.LENGTH_SHORT).show();
                    else
                        Toast.makeText(view.getContext(), "saved failed!", Toast.LENGTH_SHORT).show();

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }else{
                Log.e(TAG," Response Error:"+String.valueOf(response.code())+response.message());
                Toast.makeText(view.getContext(), response.message(), Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {
            Log.e(TAG," Response Error :"+t.getMessage());
            Toast.makeText(view.getContext(), "conection failed!", Toast.LENGTH_SHORT).show();
        }
    });
}

Маршрутизатор:

Route::post('/saveInfo','BoController@saveInfo');

и функция:

public function saveInfo(Request $request)
{
    $student = new Student();
    $student->name = $request->name;
    $student->family = $request->family;
    $student->age= $request->age;
    if($student->save())
       echo "success";
    else
       echo "failed!";
}

проблема решена!Если в файле kernel.php должна быть строка «\ App \ Http \ Middleware \ VerifyCsrfToken :: class», используйте «@FormUrlEncoded» и @Field для модификации также в типе функции php «echo (json_encode (« success / failed »))»

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы не можете использовать @Query с методом POST.Вы должны использовать метод @Field перед каждым параметром и над @POST, добавить @ FormUrlEncoded.

@FormUrlEncoded
@POST("/saveInfo")
Call<String> sendInfo(
    @Query("name") String name,
    @Query("family") String family,
    @Query("age") String age

и добавить «/» к базовой ссылке, а не здесь.Также где конец .php?

0 голосов
/ 27 ноября 2018

В вашем вопросе 1 путаница.

@POST("/saveInfo")
Call<String> sendInfo(
    @Query("name") String name,
    @Query("family") String family,
    @Query("age") String age

Является ли это POST API или GET API, потому что вы используете аннотацию @Query, связанную с GET API, но вы объявляете этот API как @POST,Это может помочь вам решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...