2011-01-09 14 views
1

私は、このようなURLでHttpWebRequestのを作っています:モノ - ウリクラス

"http://mysite.com/search?query=my+search+string" 

問題があり、ウリクラスは%でそれをエスケープし、私はできませんに対する要求を作ってるんだサイトエスケープされた文字を処理します。 (私はサイトを修正するために制御することはできません)

だから、この[廃止]コンストラクタ試してみました:

new Uri(myUriString, true); 

をしかし、デバッグ時に、私のウリはまだ脱出してしまった、任意の違いを確認していないようでした。

私はMonoを搭載したMacでこれを実行していますが、同じ動作をしているかどうかをWindowsの標準.Netで試していません。

この問題を回避する別の方法はありますか?

答えて

1

私は、Windows 7マシンにMicrosoft .NETランタイムとMono通じ

Uri uri = new Uri("http://mysite.com/search?query=my+search+string"); 
Console.WriteLine(uri.ToString()); 

を実行し、それが文字をエスケープしませんでした。これがクエリパラメータだと思う別のURLにこのURLが追加されていないことを確認してください。

+0

HttpWebRequest.Createを介して送信し、結果のRequestUriを確認します。 (そして、おそらくToStringを呼び出さずに、デバッグ中にUriオブジェクトを調べてください)それでも見れば、Mac上のMonoのバージョンかもしれません。 – jonathanpeppers

+2

@Jonathan私は今Macにあなたに返信しています。私はHttpWebRequest.Create()でも同じテストを実行しましたが、あなたが言っていることをすることはできません。あなたはあなたが失敗とその出力を主張する完全なコード例を投稿できますか?私はOS X 10.5.7でモノ2.8.2を使用しています。私は本当に、あなたがあなたと思うものをウリの文字列として入れていないと感じています。あなたの例を確認し、使用しているものを正確に複製するようにしてください。サイトが機密でない場合は、実際のURIを投稿してください。必要に応じて、ドメイン名を変更することができます。 –

+0

良い洞察力、サー。私は実際に私の検索文字列のHttpUtility.UrlEncodeを呼び出していたので、Uriクラスの問題はありませんでした。ありがとうございました。 – jonathanpeppers

0

悲しいことに、私はこれを回避する方法を見ません。ヘキサコードを使用して文字をエスケープすることは、Uri仕様にあり、サーバーによって遵守される必要があります。