查询字符串中的斜杠问题

时间:2009-08-06 13:10:35

标签: asp.net query-string urlencode

我正在使用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”部分的情况下调用

7 个答案:

答案 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 ;;