我正在使用WebRequest类向某个站点发出请求。查询字符串包含斜杠(/),这会导致网站截断网址,因为它不会将其视为查询字符串的一部分。
查询字符串是:“my params / by slash”。
请求:
var request = WebRequest.Create(
"http://www.somesime.com/q-my+params+%2f+separated+by+slash"
);
我错过了什么?
编辑: 在此处的所有答案都更新后:
我错了查询字符串,它实际上不是查询字符串,但是网址应该看起来(没有“?”):
"http://www.somesime.com/q-my+params+%2f+separated+by+slash"
网址“http://www.somesime.com/q-my+params+%2f+separated+by+slash”是Server.UrlEncode方法的结果。代码:
var url = "http://www.somesime.com/q-" +
Server.UrlEncode(@"my params / separated by slash");
编辑2: 如果我将生成的url放入浏览器,一切正常。 但是,如果我通过WebRequest类运行它,那么url会在没有“/ by slash”部分的情况下调用
答案 0 :(得分:1)
如果这是您的实际代码,则错过了?:
var request = WebRequest.Create("http://www.somesime.com/?q=my+params+%2f+separated+by+slash");
答案 1 :(得分:1)
您需要查看apache AllowEncodedSlashes选项
http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes
您应该可以通过.htaccess或httpd conf
启用此功能答案 2 :(得分:0)
UrlEncode它。 (您需要引用System.Web
)
string url = "http://www.somesime.com/?q=my+params+%2f+separated+by+slash");
var request = WebRequest.Create(HttpUtility.UrlEncode(url));
答案 3 :(得分:0)
var request = WebRequest.Create("http://www.somesime.com?q=my+params+%2f+separated+by+slash");
答案 4 :(得分:0)
网址的这一部分:
/q=my+params+%2f+separated+by+slash
实际上是URL的延续,网站可能使用某种URL路由。查询字符串用'?'表示并由'&'分开。
如果你确实需要从URL中删除'/',那么HttpUtility.UrlEncode就是可行的方法,但是在你的情况下这对你没有好处,因为对URL做的任何编码几乎肯定会导致你的WebRequest失败
答案 5 :(得分:0)
(是的,这就是你所缺少的。)
答案 6 :(得分:0)
像这样使用
$ qrypic =' INSERT INTO tbl_propics(userID,num,imagename,propic)VALUES(" $ id"," 1"," http:/ /\graph.facebook.com / \ $ ID / \画面类型=大"" 1")&#39 ;;