okhttp3使用post请求

本文介绍在Android9.0以上版本中如何正确配置网络请求,包括nettools.xml文件的设置,以及在Application中引用该文件的方法。此外,还详细展示了如何使用OkHttp3框架进行POST请求的具体代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先引用文件,否则Android9.0以后的网络请求无法使用

 


nettools.xml文件信息如下


<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

在application里面添加引用 

android:networkSecurityConfig="@xml/nettools"

然后再添加网络请求权限和读写权限

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

引用okhttp3框架

implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.squareup.okio:okio:1.13.0'

最后就可以使用post请求了

代码如下

String url = "http://123.151.192.133:8020/S02/CommandGate";
//1,创建OKhttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//2,创建Request
RequestBody formBody = new FormBody.Builder()
        .add("CommandName","APP0102")
        .add("version", "1")
        .add("appType", "Android")
        .add("userName", "admin")
        .add("password", "1")
        .build();

Request request = new Request.Builder().url(url).post(formBody).build();
//3,创建call对象并将请求对象添加到调度中
mOkHttpClient.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        Log.e("测试", e+"");
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        Log.e("测试", response.body().string());
    }

});
### 如何使用 OkHttp3 发送 POST 请求 为了利用 OkHttp3 库发送 HTTP POST 请求,可以创建 `RequestBody` 对象来封装要发送的数据。接着,构建一个带有此请求体的 `Request` 实例,并通过 `OkHttpClient` 来发起该请求。 下面是一个简单的例子展示怎样构造并发出一个同步的 POST 请求: ```java import okhttp3.Call; import okhttp3.Callback; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class PostExample { private static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); OkHttpClient client = new OkHttpClient(); String post(String url, String json) throws Exception { RequestBody body = RequestBody.create(json, JSON); Request request = new Request.Builder() .url(url) .post(body) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } } } ``` 对于异步请求,则需提供回调函数处理服务器返回的结果: ```java client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); System.out.println(response.body().string()); } }); ``` 上述代码展示了如何设置请求头以及指定内容类型为 application/json[^1]。需要注意的是,在实际应用中应当根据 API 文档调整 MIME 类型和其他头部信息以匹配服务端预期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A HandSome Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值