2012-09-12 36 views
5

私はHttpClientを使用しています。私はWebフォームのパラメータで投稿しています。値の1つ(名前ではない)は外国のスウェーデン人の文字ö、#246です。 öASCII:ラテン・スモール・レターO UmlautC#HttpClient FormUrlEncodedContentエンコーディング(VS 2012)

手動では、IE、Firefox、およびChromeはすべてこの文字をS%F6kに変換し、すべて正常に動作します。しかし、VS 2012 C#は、FormUrlEncodedContent(dict)経由でそれを%C3%に変換します。B6

VS 2012に変換してフレンドリなS%F6kに伝える方法がありますか(まだHttpClientを使用していますか?他人を助けること

私はコードのほとんどを添付しました、(クッキー、プロキシ、など...)

// Create Handler 
var handler = new HttpClientHandler(); 

// Cookies 
var cc = new CookieContainer(); 
handler.CookieContainer = cc; 

// Proxy - for fiddler 
WebProxy proxy = new WebProxy(); 
proxy.Address = new Uri("http://localhost:8888"); 
handler.Proxy = proxy; 

// Create the client 
var client = new HttpClient(handler); 

var request4 = new HttpRequestMessage(); 

client.DefaultRequestHeaders.Clear(); 
client.DefaultRequestHeaders.Add("Accept", "text/html, application/xhtml+xml, */*"); 
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate"); 
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.8,sv-SE;q=0.5,sv;q=0.3"); 
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"); 

// Form Data 
var dict4 = new Dictionary<string, string> 
{ 
    { "page", "kantlista" }, 
    { "kod", "A0004n" }, 
    { "termin", "H12" }, 
    { "anmkod", "17113" }, 
    { "urval", "ant" }, 
    { "listVal", "namn" }, 
    { "method", "Sök" } // S%F6k 
}; // dict 

request4.Content = new FormUrlEncodedContent(dict4); 

var value4 = new FormUrlEncodedContent(dict4); 
string uri4 = "https://www.ltu.se/ideal/ListaKursant.do"; 
var response4 = await client.PostAsync(uri4, value4); 
response4.Headers.Add("Cache-Control", "no-cache") 
response4.EnsureSuccessStatusCode(); 
string responseBody4 = await response4.Content.ReadAsStringAsync(); 

本当にありがとうございました! Todd Booth

+0

'request4'の目的は何ですか?それは決して使用されていないように見えます。 – MEMark

答えて

8

FormUrlEncodedContent utf8エンコードのクラスエンコード形式データ。
ByteArrayContentクラスを試し、HttpUtility.UrlEncode(String, Encoding)をエンコードしてください。

+0

これは私のために働いた。しかし、 'HttpUtility.UrlEncode("!@ $#% "、Encoding.UTF8)は' FormUrlEncodedContent'とは異なる結果をもたらしました。 –

関連する問題