3

サーバーに POST を実行する次のようなコードがあります。

string URI = "http://mydomain.com/foo";
string myParameters =
   "&token=1234" +
   "&text=" + HttpUtility.UrlEncode(someVariable);

using (WebClient wc = new WebClient())
{
      wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
      string HtmlResult = wc.UploadString(URI, myParameters);
}

私がやっているようにパラメーターを UrlEncode する必要がありますUploadStringか、それとも自動的に処理しますか? 二重エンコーディングの危険を冒したくありません。

4

1 に答える 1

1

はい、メソッドを使用する場合はエンコードする必要がありますUploadString

ただし、ケースにはよりインテリジェントなオーバーロードを使用できます ( UploadValues):

string URI = "http://mydomain.com/foo";
var values = new NameValueCollection
{
    { "token", "1234" },
    { "text", someVariable },
};

using (var wc = new WebClient())
{
    byte[] result = wc.UploadValues(URI, values);
    string htmlResult = Encoding.UTF8.GetString(result);
}

これで、エンコーディングについて心配する必要がなくなりました。はWebClient、要求を送信するときにそれらを考慮します。application/x-www-form-urlencodedまた、メソッドを使用すると、UploadValuesこの Content-Type ヘッダーが自動的にリクエストに追加されるため、追加していたものを削除したことに気付くでしょう。

于 2012-12-24T11:09:23.980 に答える