使用OkHttpClient,发送post请求,入参参数为String,怎样编写请求方法
时间: 2024-09-24 08:24:48 浏览: 37
为Retrofit统一添加post请求的默认参数的方法
5星 · 资源好评率100%
使用OkHttpClient发送POST请求时,你可以按照以下步骤编写请求方法:
首先,你需要导入必要的库:
```java
import okhttp3.*;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Map;
```
然后创建一个发送POST请求的函数,例如:
```java
public String sendPostRequest(String apiUrl, Map<String, String> params) throws IOException {
OkHttpClient client = new OkHttpClient(); // 创建OkHttpClient实例
// 将参数转化为查询字符串或JSON正文,这里假设是一个简单的键值对形式的查询字符串
StringBuilder query = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if (query.length() > 0) {
query.append("&"); // 如果不是第一个参数,添加&字符分隔
}
query.append(entry.getKey()).append("=").append(entry.getValue());
}
// 构造请求URL和请求体
RequestBody body;
if (apiUrl.endsWith("?")) { // 如果URL本身已经包含查询参数,追加新的参数
apiUrl += query.toString();
} else {
body = FormBody.Builder()
.add("params", query.toString())
.build(); // 如果是POST JSON,可能会使用RequestBody.Builder构建JSON内容
}
Request request = new Request.Builder()
.url(apiUrl)
.post(body) // 对于POST请求
.build();
// 发送请求并获取响应
Response response = client.newCall(request).execute();
// 检查状态码,通常2XX表示成功
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response.code());
}
// 从响应获取响应体作为字符串
String responseBody = response.body().string(Charset.forName("UTF-8"));
return responseBody;
}
```
这个函数接收API URL和一个参数映射(Map),然后发送一个POST请求。注意这里的示例假设了参数是作为一个查询字符串附加到URL上,如果是JSON格式,则需要创建一个`RequestBody`来携带JSON数据。
阅读全文