C# URi 字符串太长,如何转换为 JSON raw [重复]
Posted
技术标签:
【中文标题】C# URi 字符串太长,如何转换为 JSON raw [重复]【英文标题】:C# URi string is too long, how to convert to JSON raw [duplicate] 【发布时间】:2020-10-13 12:04:32 【问题描述】:终于弄清楚如何通过 HttpClient 将 QueryString 作为 POST 发送,但另一个问题是,URi 字符串太长,因为其中一个字符串被文件编码为 ToBase64String
是否可以转换此解决方案:
NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
queryString.Add("mail_from", FromEmailAddress);
queryString.Add("mail_to", ToEmailAddress);
queryString.Add("mail_Attachment", ZipInBytes);
var response = await client.PostAsync($"/api?queryString", null);
还有其他方法可以发送很长的字符串吗?在邮递员中工作的 JSON 原始数据发送到 API
"mail_from":"value",
"mail_to":"value2,
"mail_Attachment":"very long string"
或者我完全出局了,这是不可能的。我的目标是将带有文件的数据从 Outlook 发送到 API 并保存到数据库。
【问题讨论】:
我不熟悉邮递员你有邮递员发送的原始http请求吗?我怀疑正文中有“原始数据”选项。 您可以更改 Web 服务器上的最大查询长度,但我强烈建议不要这样做,除非您不关心 DDOS 攻击。我建议使用POST
专门用于大数据传输的替代方法。除了使用POST
之外,还有许多其他方法可以实现这一点
相关:***.com/questions/25158452/…
@xdtTransform request.AddParameter("application/json", "\r\n \"mail_from\":\"mail@mail.com\",\r\n \"mail_to\":\"mailfrom@mail.com\"\r\n", ParameterType.RequestBody);
可以放在这段代码中 variable
insteed mail@mail.com
?
【参考方案1】:
您应该(如果可能)发送数据,例如正文中的文件,而不是 QueryString。
例如:
//Class containing all POST data
public class PostBody
public string FromEmailAddressget;set;
public string ToEmailAddressget;set;
public string ZipInBytesget;set;
// Populate model
PostBody body = new PostBody FromEmailAddress = FromEmailAddress, ToEmailAddress = ToEmailAddress, ZipInBytes = ZipInBytes;
// Serialize to JSON
var serializedBody = JsonConvert.SerializeObject(body);
// Set content type
client.Headers.Add("Content-Type", "application/json");
// Do request with serialized JSON as post body
var response = await client.PostAsync($"/api?queryString", serializedBody);
【讨论】:
以上是关于C# URi 字符串太长,如何转换为 JSON raw [重复]的主要内容,如果未能解决你的问题,请参考以下文章
414 - 请求的 uri 太长 - url 长度为 70 个字符