OKHttp3学习之五:POST请求(JSON参数形式)

需求:实现用户登陆,登录信息以JSON参数的形式发送

在app模块的build.gradle配置

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

实现源码

public void postRequest(View view) {
    String username = mEtUserName.getText().toString().trim();
    String password = mEtPassWord.getText().toString().trim();
    loginWithJson(username, password);
}

private void loginWithJson(String username, String password) {
    OkHttpClient client = new OkHttpClient();
    String url = SERVER_ADDRESS + "/login/json";

    //构建JSON参数
    JSONObject json = new JSONObject();
    try {
        json.put("username", username);
        json.put("password", password);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    String jsonParams = json.toString();
    Log.i(TAG, "json params: " + jsonParams);

    //设置 Content-Type为 application/json
    RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonParams);
    Request request = new Request.Builder().url(url).post(body).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();

                    JSONObject json = null;
                    try {
                        json = new JSONObject(result);
                        final int code = json.optInt("code");
                        final String message = json.optString("message");
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (code == 1) {
                                    Log.i(TAG, "登录成功");
                                } else {
                                    Log.i(TAG, "登录失败");
                                }
                                Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
                            }
                        });
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    });
}

请求JSON参数

json params: {"username":"Joe.Ye","password":"123456"}

服务器返回数据

{
    "code": 1,
    "message": "登陆成功"
}
上一篇 OKHttp3学习之四:POST请求(Form表单形式)
下一篇 OKHttp3学习之六:文件下载(简单方式)
目录
文章列表
1 MyBatis generator自定义插件或者扩展报Cannot instantiate object of type XXX
MyBatis generator自定义插件或者扩展报Cannot instantiate object of type XXX
2
深度学习基础:线性代数(4)_范数
深度学习基础:线性代数(4)_范数
3
Android启动页黑屏及最优解决方案
Android启动页黑屏及最优解决方案
4
JSON Web Token(JWT)原理和用法介绍
JSON Web Token(JWT)原理和用法介绍
5
Linux下进程及端口查询汇总
Linux下进程及端口查询汇总
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。