2012-03-22 14 views
0

API REST応答を取得しようとしていますが、APIのURLに "?" (下記の例を参照)。HttpWebRequestリクエストに "?" API URLの

HttpWebRequest request = WebRequest.Create("http://api.mydomain.com/news/?tag=sports") as HttpWebRequest; 

これをエスケープする方法はありますか?

私はUri.EscapeUriStringHttpUtility.HtmlEncodeを試しましたが、どちらも動作しません。

アイデア?

+2

有効なURLです。なぜあなたはそれをエスケープしたいのですか? –

+0

これはなぜ問題ですか? –

+0

"?" APIのURLが破られており、APIがデフォルトのカテゴリで応答しています。 – pepeortiz

答えて

1

何もエスケープする必要はありません。 ?は、URLのパス部分とクエリ文字列部分を区切るものです。 http://api.mydomain.com/news/?tag=sportsは完全に有効なURLです。

また、ご使用のAPIで期待される値は:http://api.mydomain.com/news/sports?あなたが消費しようとしているAPIが分からないと言うのは難しいです。

+0

私は、URLが有効なURLであることを理解しています...私が持っている問題は、HttpWebRequest request = WebRequest.Create();を使用しているときにurl( "?" – pepeortiz

+1

@ user1287083のように、消費しようとしているAPIのドキュメントを参照するか、著者に連絡して、スポーツタグでニュースを入手するために使用するURLを尋ねる必要があります。私たちがあなたを助けるかもしれないことは疑問ではありません。 –

+0

PHPでcurlを使用して$ api_url = "http://api.mydomain.com/news/?tag=sports"を渡すと、それは問題なく動作します。 – pepeortiz

0

文字列の代わりにUriオブジェクトをCreate()メソッドに渡してみてください。

HttpWebRequest request = WebRequest.Create(new Uri("http://api.mydomain.com/news/?tag=sports")) as HttpWebRequest; 

How to add query string to httpwebrequest

1

まず、あなたはのparamsせずに、URLにリクエストを作成する必要があります。

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://api.mydomain.com/news/"); 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 

この後、パラメータを送信する文字列を作成します。

 strParams = "tag=" + strTag; 
     req.ContentLength = strSaida.Length; 

次に書きます。

 stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 
     stOut.Write(strParams); 
     stOut.Close(); 

これは必要なものですか?

関連する問題