C# HttpWebRequest请求带有“quot;”&引用;在API URL中

C# HttpWebRequest请求带有“quot;”&引用;在API URL中,c#,api,httpwebrequest,C#,Api,Httpwebrequest,我试图获取一个API REST响应,但API的URL中有一个“?”(参见下面的示例) 有没有办法逃避这一切 我尝试了Uri.EscapeUriString和HttpUtility.HtmlEncode,但也不起作用 有什么想法吗?你不需要逃避任何事情。?将url的路径部分与查询字符串部分分开http://api.mydomain.com/news/?tag=sports是一个完全有效的url 或者您的API期望:http://api.mydomain.com/news/sports?如果不知道要

我试图获取一个API REST响应,但API的URL中有一个“?”(参见下面的示例)

有没有办法逃避这一切

我尝试了
Uri.EscapeUriString
HttpUtility.HtmlEncode
,但也不起作用


有什么想法吗?

你不需要逃避任何事情。
将url的路径部分与查询字符串部分分开<代码>http://api.mydomain.com/news/?tag=sports是一个完全有效的url


或者您的API期望:
http://api.mydomain.com/news/sports
?如果不知道要使用哪个API,很难说。请尝试将
Uri
对象而不是字符串传递给
Create()
方法

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

首先,您必须使用不带参数的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();

这就是您需要的吗?

这是一个有效的url。为什么要逃避它?似乎“?”正在破坏API的URL,API正在使用默认类别进行响应。
似乎“?”正在破坏API的URL
。不需要。您应该阅读API文档来了解如何获取运动类别。我的难题是,使用PHP curl()上述url返回的数据是正确的。但是当使用相同url的WebRequest.Create()时,API不会返回相同的数据(默认为基本类别)。我基本上想知道我是否做错了什么,遗漏了什么,或者这是否是.NET发送请求的方式的问题。我相信当我把“?”放在WebRequest.Create()中时,url正在被编码。。。因此,API没有识别参数,而是返回默认类别(即“全部”)。我知道URL是一个有效的URL。。。我遇到的问题是,当使用HttpWebRequest=WebRequest.Create()时,url(带“?”)不起作用@user1287083,那么,也许你应该查阅你试图使用的API的文档,或者联系作者,询问他们你应该使用什么url才能在运动标签中获取新闻。这不是一个我们可以帮助您解决的问题;它工作没有问题。我会联系开发人员谁建立了API,并问他关于它。。。也许他可以调试代码并记录get请求,以查看使用WebRequest.Create()时发送的内容;。url是“api.mydomain.com/news/?tag=sports”。。。我确信。。。使用PHP curl对其进行了验证。我遇到的问题是,我现在需要在ASP.NET中创建一个页面,以获取带有“sport”标记的故事。文档说明正确的格式是“api.mydomain.com/news/?tag=sports”。。。所以这不是问题所在。我的问题是,在WebRequest.Create(此处为url)中使用url时,url不起作用。我甚至在PHP中创建了一个页面来返回json,同时我解决了这个问题,但这是一个我不想在生产中使用的黑客行为。
        stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
        stOut.Write(strParams);
        stOut.Close();