2012-03-22 49 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(); 

这就是你需要的吗?