在 Java 中模拟 POST 请求发送 JSON 格式的报文,可以使用 HttpURLConnection
或者更现代的 HttpClient
。以下是使用 HttpClient
的示例:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.concurrent.Flow;
import java.util.concurrent.Flow.Subscriber;
import java.util.concurrent.Flow.Subscription;
import java.util.concurrent.SubmissionPublisher;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
String url = "https://example.com/api/endpoint";
String jsonBody = "{\"key\":\"value\"}";
HttpClient httpClient = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
// 获取返回的状态码
int statusCode = response.statusCode();
System.out.println("Status Code: " + statusCode);
// 获取返回的报文体
String responseBody = response.body();
System.out.println("Response Body: " + responseBody);
// 进行断言,根据返回的报文内容判断是否符合预期
// 例如,如果返回的 JSON 包含特定字段,可以使用 JSON 解析库来进行解析和断言
if (responseBody.contains("expectedField")) {
System.out.println("Response contains expected field.");
} else {
System.out.println("Response does not contain expected field.");
}
}
}
上述示例使用 Java 11 引入的 HttpClient
,并向指定的 URL 发送一个 POST 请求,请求体为 JSON 格式。然后,根据返回的状态码和报文体进行断言。
请注意,上述代码需要 Java 11 或更高版本。如果你使用的是较旧的 Java 版本,可以考虑使用 Apache HttpClient 或 OkHttp 等其他 HTTP 客户端库。