私は非適合のUrisの使用について尋ねるいくつかの投稿を見ましたが、どれも良い答えはありません。私はWindows Phoneコントロールを作成しており、HTTP GETを使用してATOMデータを要求する必要があります。 URLには、%3d(等号)という文字を含める必要があります。これは、私が支配していない第三者サービスであるため、交渉はできません。私はDownloadStringAsyncでWebクライアントを使用していリテラルUriのリクエスト
http://host.com?arg1=val1&arg=val2%3d
が、それは文字列でウリオブジェクトではなく、URLのみを受け付け、次のようなURLを想像してみてください。 URIオブジェクトは、自動的にこれらの文字をエスケープしと送信します。
http://host.com?arg1=val1&arg=val2=
これが失敗しました。推奨されないコンストラクタ引数 "UserExcaped"がありますが、これは必要なものですが、利用できません。私の唯一の選択肢は、rawソケットと最小限のHTTPサポートを使用して独自の文字列ダウンロードメソッドを実装することです。
他の考えはありますか?ヘルプは非常に感謝!
UPDATE
string apps = "http://blah.com/api?prev=AAAAAAA%3d&next=BBBBBBB"; var u = new Uri(apps); string apps2 = u.ToString(); Debug.Assert(apps == apps2); // That %3d will always be converted to an equals sign
はまた、私は、そのIが25%パーセントを符号化することによって巧妙なことしようとした場合(それがだ "PREV = AAAAAA%253D &次= BBBBB")、指摘すべきです%25のそのままのリテラル文字列をそのまま受け取りましょう!等号に変換することは積極的です。
あなたはページページResponseEncoding =「ISO-8859-1」が、それはエンコードの問題 – MethodMan
のように聞こえる設定することができます方法は、あなたがHttpUtility.UrlEncodeまたはHttpUtility.UrlDecode、などを使用してみましたがありますか..?私は間違いなくエンコードされたparamatersでサーバーに当たったが、代わりにHttpWebRequestを使用していた。 –
Hmmm ...私は私の質問に例を追加しました。 URIを構築しようとするとすぐに、URIが壊れてしまいます。 –