当我使用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要求将其作为网址的一部分。
答案 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"));