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);
终于弄清楚如何通过 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);