在本文中,我们将用Java创建一个OkHttppost HTTP请求示例。
OkHTTP是一个开源项目,旨在成为Android和Java应用程序的高效HTTP客户端。
OkHttp支持Android 5.0+(API级别21+)和Java 1.8+。在本文中,我们将使用Java1.8+编写代码。
首先将库作为依赖项添加到pom.xml中:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.9.0</version>
</dependency>
要查看此库的最新依赖项,请查看page on Maven Central。
在这个例子中,我们将为spring boot CRUD示例项目发出POST HTTP客户端请求。这个spring-boot-crud示例项目已经部署、启动并运行。
package com.javaguides.okhttp.tutorial.crud;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpPost {
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
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();
}
}
public static void main(String[] args) throws IOException {
OkHttpPost example = new OkHttpPost();
String json = "{\r\n" +
" \"firstName\" : \"Ramesh\",\r\n" +
" \"lastName\" : \"Fadatare\",\r\n" +
" \"emailId\" : \"ramesh@gmail.com\"\r\n" +
"}";
String response = example.post("http://localhost:8080/api/v1/employees", json);
System.out.println(response);
}
}
下图显示了源代码的屏幕截图以及输出:
在这个简单的例子中,我们构建了一个RequestBody,用POST请求发送两个参数——“用户名”和“密码”:
package com.javaguides.okhttp.tutorial;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpPostRequestParameterExample {
private static final String BASE_URL = "http://localhost:8080/spring-rest";
static OkHttpClient client = new OkHttpClient();
public static void main(String[] args) throws IOException {
final RequestBody formBody = new FormBody.Builder()
.add("username", "test")
.add("password", "test").build();
final Request request = new Request.Builder()
.url(BASE_URL + "/users")
.post(formBody).build();
final Call call = client.newCall(request);
final Response response = call.execute();
System.out.println(response);
}
}
在本例中,我们将发送一个POST请求,其中JSON为RequestBody:
package com.javaguides.okhttp.tutorial;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpPostExample {
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
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();
}
}
String bowlingJson(String player1, String player2) {
return "{'winCondition':'HIGH_SCORE'," + "'name':'Bowling'," + "'round':4," + "'lastSaved':1367702411696," +
"'dateStarted':1367702378785," + "'players':[" + "{'name':'" + player1 +
"','history':[10,8,6,7,8],'color':-13388315,'total':39}," + "{'name':'" + player2 +
"','history':[6,10,5,10,10],'color':-48060,'total':41}" + "]}";
}
public static void main(String[] args) throws IOException {
OkHttpPostExample example = new OkHttpPostExample();
String json = example.bowlingJson("Jesse", "Jake");
String response = example.post("http://www.roundsapp.com/post", json);
System.out.println(response);
}
}
输出:
http://www.roundsapp.com/393141003
请注意,输出响应URL包含新创建的资源的ID。
在这个例子中,我们将发送一个POST Multipart Request。我们需要将RequestBody构建为MultipartBody,以发布文件、用户名和密码:
package com.javaguides.okhttp.tutorial;
import java.io.File;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpPostUploadFileExample {
private static final String BASE_URL = "http://localhost:8080/spring-rest";
static OkHttpClient client = new OkHttpClient();
public static void main(String[] args) throws IOException {
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("username", "test").addFormDataPart("password", "test")
.addFormDataPart("file", "file.txt", RequestBody.create(MediaType.parse("application/octet-stream"),
new File("src/test/resources/test.txt")))
.build();
Request request = new Request.Builder().url(BASE_URL + "/users/multipart").post(requestBody).build();
Call call = client.newCall(request);
Response response = call.execute();
System.out.println(response.code());
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2019/05/okhttp-post-request-java-example.html
内容来源于网络,如有侵权,请联系作者删除!