OKHttp3学习之三:GET请求

需求:实现用户信息获取并在UI界面上显示

在app模块的build.gradle配置

compile 'com.squareup.okhttp3:okhttp:3.4.2'
compile 'com.squareup.picasso:picasso:2.5.2'

实现源码

public void getRequest(View view) {
    OkHttpClient client = new OkHttpClient();
    String url = SERVER_ADDRESS + "/user/info?id=1";
    Request request = new Request.Builder().url(url).get().build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Log.i(TAG, "请求失败: " + e.getLocalizedMessage());
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()) {
                ResponseBody body = response.body();
                if (body != null) {
                    String result = body.string();
                    Log.i(TAG, "返回成功: " + result);
                    body.close();

                    showUserInfo(result);
                }
            }
        }
    });
}

private void showUserInfo(final String result) {
    //在主线程中实现UI更新
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            try {
                JSONObject json = new JSONObject(result);
                String id = json.optString("id");
                String username = json.optString("username");
                String head_url = json.optString("head_url");
                mTvNickName.setText(username);
                //利用Picasso图片加载框架实现头像异步加载
                Picasso.with(MainActivity.this).load(head_url).resize(100, 100).centerCrop().into(mIvAvatar);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });
}

服务器返回数据

{
    "head_url": "http://www.appblog.cn/images/avatar.png", 
    "id": "1", 
    "username": "Joe.Ye"
}
上一篇 OKHttp3学习之二:HTTP 协议简介
下一篇 OKHttp3学习之四:POST请求(Form表单形式)
目录
文章列表
1 Flutter在State类里获取Page类中的变量
Flutter在State类里获取Page类中的变量
2
Java实现DESede对称加解密
Java实现DESede对称加解密
3
Spring Cloud Gray 部署
Spring Cloud Gray 部署
4
在Android Studio中自定义Gradle插件
在Android Studio中自定义Gradle插件
5
Flutter实现Toast效果
Flutter实现Toast效果
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。