You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将FormUrlEncodedContent输出为字符串用于调试排查

如何将FormUrlEncodedContent输出为字符串/JSON格式排查问题

当然可以将FormUrlEncodedContent的内容输出为字符串或JSON格式,用来和供应商核对实际发送的数据。以下是具体实现方法:

方法1:输出为URL编码格式字符串

FormUrlEncodedContent继承自HttpContent,可以通过ReadAsStringAsync()方法读取其内容。注意HttpContent只能被读取一次,所以需要先复制一份内容用于输出,原对象保留用于发送请求:

// 原请求数据,用于后续发送请求
var requestData = new FormUrlEncodedContent(requestModel.ToKeyValuePair());

// 复制一份内容用于输出排查
var requestDataCopy = new FormUrlEncodedContent(requestModel.ToKeyValuePair());
// 读取为URL编码字符串(和实际发送的请求体完全一致)
var formContentString = await requestDataCopy.ReadAsStringAsync();
// 输出内容,可打印或写入日志
Console.WriteLine(formContentString);
// 示例输出:@@FirstName@@firs=张三&@@LastName@@last=李四&@@Address1@@addre=XX街道XX号

方法2:输出为JSON格式

如果需要更易读的格式,可以将键值对集合转换为字典后序列化为JSON:

使用System.Text.Json(.NET Core/.NET 5+默认)

// 将KeyValuePair集合转为字典
var formDataDict = requestModel.ToKeyValuePair().ToDictionary(kv => kv.Key, kv => kv.Value);
// 序列化为格式化后的JSON
var jsonString = System.Text.Json.JsonSerializer.Serialize(formDataDict, new System.Text.Json.JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(jsonString);

使用Newtonsoft.Json(如果项目引用了该包)

var formDataDict = requestModel.ToKeyValuePair().ToDictionary(kv => kv.Key, kv => kv.Value);
var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(formDataDict, Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(jsonString);

示例JSON输出:

{
  "@@FirstName@@firs": "张三",
  "@@LastName@@last": "李四",
  "@@Address1@@addre": "XX街道XX号"
}

完整代码示例

结合你的现有代码,整合后的写法如下:

var requestModel = new LeadRequestModel
{
    ContractFirstName = "张三",
    ContractLastName = "李四",
    PropStreetAddress = "XX市XX区XX街道123号"
};

// 原请求数据,用于发送请求
var requestData = new FormUrlEncodedContent(requestModel.ToKeyValuePair());

// 输出URL编码格式内容
var requestDataCopy = new FormUrlEncodedContent(requestModel.ToKeyValuePair());
var formString = await requestDataCopy.ReadAsStringAsync();
Console.WriteLine("实际发送的URL编码请求体:");
Console.WriteLine(formString);

// 输出JSON格式内容
var formDict = requestModel.ToKeyValuePair().ToDictionary(kv => kv.Key, kv => kv.Value);
var jsonString = System.Text.Json.JsonSerializer.Serialize(formDict, new System.Text.Json.JsonSerializerOptions { WriteIndented = true });
Console.WriteLine("\nJSON格式数据:");
Console.WriteLine(jsonString);

// 发送请求
HttpResponseMessage response = await client.PostAsync(apiUrl, requestData);

你可以把输出的字符串提供给供应商,他们可以直接核对数据是否正确到达,或者是否符合接口的字段要求。

内容的提问来源于stack exchange,提问作者bb2j3z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:20:10