Ответ как JSON (Модернизация + Android + PHP Slim Framework) - PullRequest
0 голосов
/ 05 мая 2018

Я использую PHP Slim Framework для создания приложения REST API для Android.

Я публикую тело в приложении, оно хорошо работает и добавляет данные в MySQL. Но у меня проблемы с ответом.

Мой ответ Модель JSON проста:

{success:'yes'}

Когда я пытаюсь получить ответ после добавления данных, Retrofit работает по методу сбоя. но добавление данных работает хорошо. Я не знаю, где я пропустил. Вот мои коды;

Файл PHP Slim Framework

$response->withHeader('Content-Type', 'application/json');
    $response->getBody()->write("{success:'yes'}");
    return $response;

} catch (PDOException $e) {
    echo '{"error": {"text": ' . $e->getMessage() . '}';
}

Модель Android-ответа

public class Response_Success {

@SerializedName("success")
@Expose
String success;

public Response_Success(String success) {
    this.success = success;
}

public String getSuccess() {
    return success;
}

public void setSuccess(String success) {
    this.success = success;
}

Класс интерфейса

public interface API_Service {
@Headers("content-type: application/json")
@POST("api/user/add")
Call<Response_Success> addFacebookUser(@Body UserFacebook userFacebook);}

Вызов API в MainActivity

API_Service service = Client.getRetrofitInstance().create(API_Service.class);

        Call<Response_Success> userFacebookCall = service.addFacebookUser(userNew);

        userFacebookCall.enqueue(new Callback<Response_Success>() {
            @Override
            public void onResponse(Call<Response_Success> call, Response<Response_Success> response) {
                Toast.makeText(MainActivity.this, ""+response.body().getSuccess(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFailure(Call<Response_Success> call, Throwable t) {
                Toast.makeText(MainActivity.this, "was wrong", Toast.LENGTH_SHORT).show();
            }
        });

Режим отладки в андроид студии; Я получаю MaltFormedJsonException, но я добавил это исключение в try catch.

1 Ответ

0 голосов
/ 05 мая 2018

Ваш ответ Json

{успех: 'да'}

недействительно. Ключ и (строка) значение должны быть в двойных кавычках.

Либо убедитесь, что ваш ответ в двойных кавычках:

{ "успех": "да"}

или попробуйте это вместо:

$response = array();
$response["success"] = "yes";
echo json_encode($response);

Примечание: вы можете проверить, является ли какая-либо строка JSON допустимой в: https://jsonlint.com/ Или же https://jsonformatter.curiousconcept.com/

...