Android OkHttp之post请求方法

简要

项目中要使用OKHttp网络框架,在build.gradle 中的dependencies{}导入OkHttp的依赖

dependencies {
    // okhttp3的依赖
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
}

在AndroidManifest.xml中添加网络请求权限

<uses-permission android:name="android.permission.INTERNET" />

说明一下,OkHttp的使用原理在这就不多说了,主要说说Okhttp中的post方法的几种使用方法,也是在项目中遇到并使用到的。说得不好的地方,请见谅。

举一个例子说明,建一个UserInfo表,请求用户添加数据接

public class UserInfo implements Serializable {
    private Integer id;
    private String name;
    private Integer age;

    //以下是set和get方法
    //......
    
   }

方法一

public class OkHttpTool {

    final static String url="http://127.0.0.1/userInfo/add";

    private static void postUser(UserInfo userInfo , Callback callback){
        //1.创建OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        //2.创建一个RequestBody,可以用add添加键值对
        RequestBody requestBody = new FormBody.Builder()
                .add("name", userInfo.getName())
                .add("age", String.valueOf(userInfo.getAge()))
                .build();
        //3.创建Request对象,设置URL地址,将RequestBody作为post方法的参数传入
        Request request = new Request.Builder().url(url).post(requestBody).build();
        //4.创建一个call对象,参数就是Request请求对象
        okHttpClient.newCall(request).enqueue(callback);
    }

}

方法二

public class OkHttpTool {

    final static String url="http://127.0.0.1/userInfo/add";

    private static void postUser(UserInfo userInfo , Callback callback){
        FormBody formBody = new FormBody.Builder()
                .add("name", userInfo.getName())
                .add("age", String.valueOf(userInfo.getAge()))
                .build();
        //1.创建OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url(url)
                .post(formBody)
                .build();
        //2.创建一个call对象,参数就是Request请求对象
        okHttpClient.newCall(request).enqueue(callback);
    }

}

方法三

public class OkHttpTool {

    final static String url="http://127.0.0.1/userInfo/add";

    private static void postUser(UserInfo userInfo , Callback callback){
        MediaType JSON = MediaType.parse("");
        JsonObject json=new JsonObject();
        json.addProperty("name",userInfo.getName());
        json.addProperty("age",userInfo.getAge());
        RequestBody requestBody = RequestBody.create(JSON, String.valueOf(json));
        //1.创建OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        //2.以JOSN方式提交数据
        Request request = new Request.Builder()
                .url(url)
                .addHeader("Content-Type","application/json;charset=UTF-8")
                .post(requestBody)
                .build();
        //3.创建一个call对象,参数就是Request请求对象
        okHttpClient.newCall(request).enqueue(callback);
    }

}

总结

以上是通过post方法添加数据或者获取数据的方法,在Activity使用也是比较方便,将callback返回的数据,使用谷歌的gson处理,转成对象接收,在赋值在ui页面就好了。