如何检查POST请求响应及响应体中newOk字段的布尔值
检查POST请求响应及提取"newOk"字段值的方法
一、基础说明
你已经通过WebClient.UploadString获取到了响应体字符串reply,接下来需要解析这个JSON格式的响应,提取其中的newOk布尔字段,同时可以通过异常捕获检查请求的状态。
二、解析响应体中的"newOk"字段
推荐两种常用的JSON解析方式,根据你的.NET版本选择:
方式1:使用.NET内置的System.Text.Json(.NET Core/.NET 5+适用)
- 先定义匹配响应结构的实体类(强类型解析更安全):
public class ApiResponse { // 字段名要和响应体中的"newOk"完全一致 public bool newOk { get; set; } // 可添加其他需要的响应字段 }
- 解析并提取字段:
try { // 把响应字符串反序列化为实体对象 var apiResponse = JsonSerializer.Deserialize<ApiResponse>(reply); if (apiResponse != null) { bool newOkValue = apiResponse.newOk; // 根据newOk的值执行后续逻辑 if (newOkValue) { // 处理newOk为true的场景 } else { // 处理newOk为false的场景 } } } catch (JsonException ex) { // 捕获JSON格式错误、字段缺失等解析异常 Console.WriteLine($"解析响应失败:{ex.Message}"); }
方式2:使用Newtonsoft.Json(第三方库,需通过NuGet安装)
如果项目中使用Newtonsoft.Json,解析方式类似:
- 同样可以定义实体类,或者直接动态解析:
// 强类型解析 var apiResponse = JsonConvert.DeserializeObject<ApiResponse>(reply); bool newOkValue = apiResponse.newOk; // 动态解析(无需定义实体类) dynamic dynamicResponse = JsonConvert.DeserializeObject(reply); bool newOkValue = dynamicResponse.newOk;
三、检查POST请求的响应状态
WebClient在请求返回错误状态码(如400、500等)时会抛出WebException,可以通过捕获该异常获取响应状态:
try { string reply = client.UploadString(httpAddr, body.ToString()); // 后续解析响应体逻辑... } catch (WebException ex) { if (ex.Response is HttpWebResponse httpResponse) { // 获取状态码 HttpStatusCode statusCode = httpResponse.StatusCode; Console.WriteLine($"请求失败,状态码:{statusCode}"); // 读取错误响应内容 using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream())) { string errorContent = reader.ReadToEnd(); Console.WriteLine($"错误响应体:{errorContent}"); } } }
内容的提问来源于stack exchange,提问作者Иван Новгородский
相关产品推荐
相关产品推荐

