0

私は現在、いくつかのリモートWebサービスを呼び出すC#WinFormsアプリケーションに取り組んでいます。アンパサンドを含む文字列に関連するバグを調査しているときに、他のWebサービス(確かにアンパサンドの問題はありません)のPOST本体を「エンコード」する次の方法に出くわしました。

object o = row.Values[i]; //some object
Type valueType = o.GetType();
if (valueType.Name.Equals("String", StringComparison.InvariantCultureIgnoreCase))
{
    o = o.ToString().Replace("&", "%26");
}

私はこれで少しWTFを実行しましたが、POST本文で完全なURLエンコードを実行する実際の理由があるのでしょうか。確かに、2つのリスクポイントはアンパサンドと疑問符だけですか?

4

1 に答える 1

1

質問は少し一方的なものです。POSTデータをエンコードする唯一の理由は、反対側がそれがエンコードされることを期待している場合です。たとえば、投稿データのコンテンツタイプが「x-www-form-urlencoded」の場合、はい、データをURLエンコードする必要があります。反対側がそれがurlencodedされることを期待しないなら、そうしないでください...

通常、柔軟なエンドポイントがあるため、Webサービスに送信されるデータをurlencodeする必要はありません。Webページから直接(フォームの投稿などを介して)呼び出されることを期待しているWebサービスがある場合、urlencodingはブラウザーによって直接実行される可能性があります。その場合、Webサービスはurlエンコードされた(したがって、それと通信したい他のすべてのもの)。

于 2012-07-24T14:43:33.907 に答える