网站首页 博客 Android使用OkHttp发送POST请求
Android使用OkHttp发送POST请求
 2020-04-16 15:06:52  管理员  2944

1.首先添加依赖包

implementation 'com.squareup.okhttp3:okhttp:4.0.1'

2.引入所需类

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.json.JSONException;
import org.json.JSONObject;

3.在Activity中发送POST请求,返回json数据并解析

    //登录验证
    private void loginRequest() {
        String username = "student";
        String password = "123456";
        String xdomain = "http://xuexi.iefeel.com";
        boolean isLoginok = false;
        String isLoginmsg = "未知错误";
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody requestBody = new FormBody.Builder()
            .add("username", username)
            .add("password", password)
            .build();
        Request request = new Request.Builder()
            .url(xdomain + "/api/login/index")
            .post(requestBody)
            .build();
        //异步请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                isLoginmsg = e.getMessage();
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                try {
                    JSONObject jsonobj = new JSONObject(response.body().string());
                    int rescode = jsonobj.getInt("code");
                    String resmsg = jsonobj.getString("msg");
                    if(rescode==100){
                        isLoginok = true;
                        JSONObject resdata = jsonobj.getJSONObject("data");
                        UserObject.userid = resdata.getInt("id");
                        UserObject.roleid = resdata.getInt("roleid");
                        UserObject.username = resdata.getString("username");
                        UserObject.realname = resdata.getString("realname");
                    }else{
                        isLoginmsg = resmsg;
                    }
                }catch (JSONException e) {
                    isLoginmsg = e.getMessage();
                }
                if(isLoginok==true){
                    //登录成功,进入其他流程
                }else{
                    //登录失败,提示错误 isLoginmsg
                }
            }
        });
    }

其中用到的UserObject类如下

public class UserObject {

    public static int userid = 0; //用户id
    public static int roleid = 0; //角色id
    public static String username = ""; //用户名
    public static String realname = ""; //姓名

}

没有了

来说两句吧
最新评论