C#中发送JSON POST请求时如何获取返回的HTTP状态码
实现方法
你用的是JDK11及以上内置的标准java.net.http.HttpClient的话,不需要从client实例本身找HTTP状态码——HttpClient是负责发送请求的公共客户端实例,不绑定单次请求的响应数据,单次请求的状态码、响应头、响应体都存在该请求对应的HttpResponse响应对象里,直接调用响应对象的statusCode()方法就能拿到int类型的状态码。
同步请求场景示例
// 构建你要发送的请求对象,替换成你实际的请求参数、请求地址、请求方法 HttpRequest targetRequest = HttpRequest.newBuilder() .uri(URI.create("目标接口地址")) .header("Content-Type", "application/json") // 替换成实际的请求方法,比如GET、POST等 .GET() .build(); // 发送请求后拿到HttpResponse响应实例,第二个参数按需选择对应响应体处理器 HttpResponse<String> response = client.send(targetRequest, HttpResponse.BodyHandlers.ofString()); // 直接获取当前请求的HTTP状态码 int statusCode = response.statusCode(); // 后续可直接根据状态码做逻辑判断 if (statusCode >= 200 && statusCode < 300) { // 2xx成功逻辑,可通过response.body()拿到响应体 String responseContent = response.body(); } else { // 异常状态码处理逻辑 }
异步请求场景示例
如果用的是异步发送方法sendAsync,在异步回调里从响应对象取状态码即可:
client.sendAsync(targetRequest, HttpResponse.BodyHandlers.ofString()) .thenAccept(response -> { int asyncStatusCode = response.statusCode(); // 后续处理逻辑 });
常见误区:不要尝试从
HttpClient实例本身读取单次请求的状态,同一个client可以发送无数次请求,本身不会存储某一次请求的响应数据。
对应代码场景参考:
内容的提问来源于stack exchange,提问作者SturdiestCoderMan
相关产品推荐
相关产品推荐

