[英]HttpClient Post with string values c#
我正在嘗試使用以下代碼發布請求,但此代碼失敗(服務器抱怨請求錯誤,因為我無法控制服務器,因此不知道服務器的功能。)
private static readonly HttpClient client = new HttpClient();
var values = new Dictionary<string, string>{
{ "x", "value" }};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync(postUrl, content);
然后我有這個代碼可以正常工作
private static readonly HttpClient client = new HttpClient();
var values = new Dictionary<string, string>{
{ "x", "\"value\"" }};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync(postUrl, content);
唯一的區別是我的值周圍帶有多余的""
。 有人可以請問為什么會這樣嗎? 還是我應該使用其他東西?
在可行的方法中,您要轉義引號。 這就是使它起作用的原因。 這意味着該值很可能用空格分隔。 也就是說,它包含兩個詞。 通常,您必須對值進行網址編碼,或者只是將其用引號引起來。 因此,當您使用“ /“
對引號進行轉義時,會將其與引號一起發送到服務器,從而可以正常工作。
讓我們考慮這個示例程序。
static void Main(string[] args)
{
Show(new Dictionary<string, string> { { "x", "value" } });
Show(new Dictionary<string, string> { { "x", "\"value\"" } });
}
private static async void Show(Dictionary<string, string> values)
{
var content = new FormUrlEncodedContent(values);
var body = await content.ReadAsStringAsync();
Console.WriteLine(body);
}
輸出為: x=value x=%22value%22
在第一種情況下,服務器讀取正文時,會看到x=value
,而value
不是字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.