GETパラメータ "names []"を使用するサービスを使用する必要があります。例えばクエリー文字列の中でカッコがエンコードされないようにする
:私はC#でWebクライアントを使用することを消費しようとするGET http://example.com/name2id?names []=john
、ブラケットがserviesが理解していない%5B%5D、にエンコードされます。ブラウザを使って上記のコードを送信すると、すべて正常に動作します。
動作しない相続人例:
シオマネキによって監視using (var client = new System.Net.WebClient())
{
response = client.DownloadString(new Uri("http://example.com/name2id?names[]=john"));
}
、HERESに要求:
GET http://example.com/name2id?names%5B%5D=john HTTP/1.1
Host: example.com
Connection: Keep-Alive
は、フレームワークは、URLをエンコードしないようにする任意の方法、またはいくつかの他はありますこの問題を回避するには?
P.S.私はAPIを制御しないので、それを変更することはできません。
UPDATE:
これはちょっと奇妙です。
using (var client = new System.Net.WebClient())
{
response = client.DownloadString(new Uri("http://example.com/name2id?names[]=john", true));
}
注ウリのboolean dontEscape
:私はに私のC#のコードを変更し、解決策を見つけました。実際は廃止されましたが、機能しますか?誰もこれを説明できますか?
私はWebClientを使用しないで、通常のソケットを使用して手動要求を行うことが唯一の方法だと思うが、それでも本当に有効な要求ではないサービスがそれを受け入れるかどうか疑問に思うでしょう。 – Doggett
あなたは、引数に合理的な名前を使用することを常に頼むことができます。もちろん、本当に名前に "[]"が必要であることを確認してください。この要件は私にとってはかなりばかばかしいようです。 –
アップデートを参照してください。 –