4

ソリューション内のあるプロジェクトから別のプロジェクトにリクエストを送信します。

WebRequest request = WebRequest.Create(UrlTemplate);
request.Timeout = 500000;
request.Method = WebRequestMethods.Http.Post;
request.ContentType = ContentType;
byte[] postData = System.Text.Encoding.ASCII.GetBytes(data);
request.ContentLength = postData.Length;
Stream newStream = request.GetRequestStream();
// Send the data.
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();

で設定されている関数ではUrlTemplate、正しい文字列(データで送信します)を取得しますが、文字列に特殊文字が含まれていると問題が発生します。

文字列が次の場合:12&34

この関数で取得するのは次のとおり12です。

文字列が次の場合:12+34

この関数で取得するのは次のとおり12 34です。

それがあなた方の何人かに起こったかどうか、そしてあなたがそれをどのように解決したかを知ってうれしいです。少し早いですがお礼を。

4

3 に答える 3

7

UrlTemplateの形成中にSystem.Web.HttpUtility.UrlEncodeまたはを使用するSystem.Net.WebUtility.UrlEncode

于 2013-01-01T16:18:37.520 に答える
2

この問題は、文字列がurl形式でエンコードされているために発生します。(これが単なるGETの場合、URLエンコードされていると思いますが、POSTを使用しています。)&記号はURLで特別な意味を持ち、+記号はスペースの代わりに使用されます。

仕様については、http://www.w3.org/TR/html401/interact/forms.html#h-17.13.3.3を参照してください。期待する結果を得るには、UrlEncode()を使用してこれらを手動でエンコードする必要があります。

于 2013-01-01T16:20:07.460 に答える
1

パスワードにURI.EscapeDataString()メソッドを使用します。特殊文字を正しく読み取るのに役立ちます。

于 2014-09-12T10:37:34.427 に答える