2012-03-22 51 views
0

我試圖獲取API REST響應,但API的URL有一個「?」在URL中(見下面的例子)。HttpWebRequest請求帶「?」在API URL

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

有沒有辦法逃脫呢?

我試過Uri.EscapeUriStringHttpUtility.HtmlEncode,但那也行不通。

任何想法?

+2

這是一個有效的網址。你爲什麼想逃避它? – 2012-03-22 22:36:11

+0

這是一個什麼問題? – 2012-03-22 22:36:16

+0

看起來像「?」正在破壞API的URL並且API正在使用默認類別進行響應。 – pepeortiz 2012-03-22 22:37:38

回答

1

你不需要轉義任何東西。 ?是將URL的路徑部分與查詢字符串部分分開的部分。 http://api.mydomain.com/news/?tag=sports是一個完全有效的網址。或者你的API期望:http://api.mydomain.com/news/sports?不知道你試圖使用哪個API很難說。

+0

據我所知,URL是一個有效的網址...我遇到的問題是,當使用HttpWebRequest request = WebRequest.Create()時,url(帶「?」)不起作用。 – pepeortiz 2012-03-22 22:40:31

+1

@ user1287083,好吧,也許你應該查閱你正在嘗試使用的API的文檔,或者聯繫作者,並詢問他們應該使用什麼URL來獲取體育標籤的新聞。這不是我們可以幫助你的問題。 – 2012-03-22 22:41:09

+0

如果我在PHP中使用curl並傳遞$ api_url =「http://api.mydomain.com/news/?tag=sports」;它工作沒有問題。 – pepeortiz 2012-03-22 22:43:45

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(); 

這就是你需要的嗎?