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 个字符

如何使用 C# 将图像转换为 Html 的数据 URI?

如何在 C# 中将 .json 文件转换为字符串 [重复]

如何将 c# 二维数组转换为 JSON 对象?

如何将内容不同但结构相同的 JSON 字符串转换为 C# 对象?

将 json 转换为 C# 数组?