2014-01-28 24 views
1

我發送Post請求的其中一個網站在Post請求發送的Post Data結尾處有一個單符號(&)。如何在HttpContent結尾處添加&符號(&)

如何在使用HttpContent時將&添加到發佈數據的末尾?

下面的代碼示例:

List<KeyValuePair<string, string>> postData = new List<KeyValuePair<string, string>>(); 
postData.Add(new KeyValuePair<string, string>("user", userid)); 
postData.Add(new KeyValuePair<string, string>("password", password)); 

HttpContent content = new FormUrlEncodedContent(postData); 

HttpResponseMessage responseMessage = await client.PostAsync("https://www.site.com/login", content); 

POST數據發送需求的樣子:

username=324234&password=12345& 

很奇怪有一個&在請求結束,但是沒有它請求失敗。

請注意,這不是在「密碼」字段末尾的&。如果我想補充一點,它會編碼&。每次請求都會發送&,而不管使用的密碼如何。

任何想法?

+0

如果你打算否決請解釋原因。 –

+0

在密碼的末尾添加&符號?這基本上是你的例子看起來像 – CDspace

+0

不,它不是在密碼的末尾,它是一個空的鍵/值。哦,我只是回答我自己的問題!謝謝@CDspace –

回答

1

FormUrlEncodedContent不支持這一點,但你總是可以在最後加上「&」自己併發送結果作爲StringContent

HttpContent content = await new FormUrlEncodedContent(postData) 
           .WithFinalAmpersandAsync(); 

... 

static class HttpContentExtensions 
{ 
    public static async Task<HttpContent> WithFinalAmpersandAsync(
     this FormUrlEncodedContent formUrlEncodedContent) 
    { 
     string content = await formUrlEncodedContent.ReadAsStringAsync(); 
     return new StringContent(content + "&"); 
    } 
} 
相關問題