簡體   English   中英

帶有字符串值C#的HttpClient發布

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM