C#HttpWebRequest获取部分编码的URL

时间:2014-12-09 21:17:53

标签: c# asp.net httpwebrequest webclient linkedin

当我使用HttpWebRequest发送get时,似乎将其转换为uri,通过编码器运行并发送编码的字符串。当我在创建请求后查看我的地址时,我有一个正确的OriginalString和一个编码不正确的AbsoluteUri。我的代码和示例网址在下面。

HttpWebRequest webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
String responseData = WebResponseGet(webRequest);

OriginalString: “https://api.linkedin.com/v1/people/url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Ffirstmlast

绝对URI: “https://api.linkedin.com/v1/people/url=https%3A//www.linkedin.com/in/firstmlast

如何强制HttpWebRequest发送我传递的原始字符串而不是uri?此外,我无法将已编码的字符串作为查询字符串发送,LinkedIn要求将其作为网址的一部分。

2 个答案:

答案 0 :(得分:1)

我在这里找到了一个HackedUri课程:http://blogs.msdn.com/b/xiangfan/archive/2012/01/16/10256915.aspx并创建了我的请求,这样就传递了一个" Hacked Uri"而不是一个字符串。这似乎是.Net的安全限制问题。

HttpWebRequest webRequest = System.Net.WebRequest.Create(HackedUri.Create(url)) as HttpWebRequest;

答案 1 :(得分:0)

您是否尝试过对网址的相关部分进行双重编码?

var request = WebRequest.CreateHttp("https://api.linkedin.com/v1/people/url=" + HttpUtility.UrlEncode("https%3A%2F%2Fwww.linkedin.com%2Fin%2Ffirstmlast"));