C# URi 字符串太长,如何转换为JSON raw

C# URi string is too long, how to convert to JSON raw

终于弄清楚如何通过 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 并保存到数据库。

您应该(如果可能)在正文中发送文件等数据,而不是 QueryString。

例如:

//Class containing all POST data
public class PostBody{
   public string FromEmailAddress{get;set;}
   public string ToEmailAddress{get;set;}
   public string ZipInBytes{get;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);