java - 如何从响应中检索数据? - 改造2

标签 java android gson retrofit2

服务器的响应如下:

{
    success: true,
    token: "someRandomToken"
}

如何检索 token从响应中?

我尝试遵循提供的解决方案 here但我无法将通用添加到 Call onResponse 内 method

编辑

这是我的方法

public void loginUser(final Context context, String url, String username, String passowrd, loginJson loginjson) {

        final MediaType JSON
                = MediaType.parse("application/json; charset=utf-8");

        loginjson.setUsername(username);
        loginjson.setPassword(passowrd);

        Gson gson = new Gson();

        String jsonFromForm = gson.toJson(loginjson);

        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create(JSON, jsonFromForm);
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .addHeader("content-type", "application/json; charset=utf-8")
                .build();

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                System.out.println("Failure!!");
            }

            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                if(response.isSuccessful()) {
                    if (context != null) {
                        new Handler(Looper.getMainLooper()).post(new Runnable() {

                            @Override
                            public void run() {
                                if(response.body() != null){

                                }
                            }
                        });
                    }
//
                } else {
                    if (context != null) {
                        new Handler(Looper.getMainLooper()).post(new Runnable() {

                            @Override
                            public void run() {
                                Toast.makeText(context, context.getResources().getString(R.string.failed_to_login),
                                        Toast.LENGTH_SHORT).show();
                            }
                        });
                    }

                }
            }

        });


    }

实现@Piyush Patel 答案后: 我更改CallResponseretrofit2.Call<tokenRetrieved>retrofit2.Reponse<tokenRetrieved>分别。但是Callback在我的enqueue提示错误要求我实现其 onResponseonFailure方法

新手问题:我正在使用 retrofit1方法?!!

最佳答案

这是一个 fragment ,展示了如何使用 GSON 实现它

public class JsonResponse {

    public String success;
    public String token;

    public JsonResponse(String success, String token) {
        this.success = success;
        this.token = token;
    }
}

Call<JsonResponse> call = api.checkLevel(1);
        call.enqueue(new Callback<JsonResponse>() {
            @Override
            public void onResponse(Call<JsonResponse> call, Response<JsonResponse> response) {
                if (response.isSuccessful()) {
                    JsonResponse jsonResponse=response.body();
                }
            }

            @Override
            public void onFailure(Call<JsonResponse> call, Throwable t) {
            }
        });

关于java - 如何从响应中检索数据? - 改造2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43911108/

相关文章:

java - SQLException : Before start of result set

android - 如何在整点启动 AlarmManager?

java - Gson没有获取完整的字符串值

java - 从 protobuf 描述符获取默认实例

java - 内存不足错误(给定的解决方案不起作用)

java - 如何使用相同的键将枚举映射到枚举

未应用 Android 自定义工具栏主题

android - 如何创建中心凸起的标签栏?

java - 如何用gson解析相对复杂的url

java - 对封闭类实例的内部类引用为空