2

我正在使用 WebRequest 类向某个站点发出请求。查询字符串包含一个斜杠 (/),这会导致 url 被站点剪切,因为它不会将其视为查询字符串的一部分。

查询字符串是:“我的参数/斜线分隔”。

请求:

var request = WebRequest.Create(
    "http://www.somesime.com/q-my+params+%2f+separated+by+slash"
);

我错过了什么?

编辑:毕竟这里的所有答案都是更新的:

我对查询字符串有误,它实际上不是查询字符串,但 url 应该看起来(没有“?”):

"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 结果是因为它被称为没有“/ 由斜杠分隔”部分

4

7 回答 7

1

你需要看看 apaches AllowEncodedSlashes 选项

http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes

您应该可以通过 .htaccess 或 httpd_conf 启用它

于 2010-08-11T07:50:55.573 回答
1

如果这是您的实际代码,您缺少 ?:

var request = WebRequest.Create("http://www.somesime.com/?q=my+params+%2f+separated+by+slash");
于 2009-08-06T13:13:41.673 回答
1

你忘了放“?” 在键名之前,请尝试:

var request = WebRequest.Create("http://www.somesime.com?q=my+params+%2f+separated+by+slash");
于 2009-08-06T13:14:25.447 回答
0

这部分网址:

/q=my+params+%2f+separated+by+slash

实际上是URL的延续,网站大概使用了某种URL路由。查询字符串由“?”表示 并用'&'分隔。

如果您确实需要从 URL 中删除“/”,那么 HttpUtility.UrlEncode 将是可行的方法,但这不会对您有利,因为对 URL 进行的任何编码几乎肯定会导致您的 WebRequest 失败。

于 2009-08-06T13:20:56.577 回答
0

?

(是的,这就是你所缺少的。:)

于 2009-08-06T13:21:16.000 回答
0

UrlEncode吧。(您需要参考System.Web

string url = "http://www.somesime.com/?q=my+params+%2f+separated+by+slash");
var request = WebRequest.Create(HttpUtility.UrlEncode(url));
于 2009-08-06T13:14:04.637 回答
0

像这样使用

$qrypic = 'INSERT INTO tbl_propics (userID,num,imagename,propic) VALUES ("$id","1","http://\graph.facebook.com/\$id/\picture?type=large" "1")';

于 2014-04-21T15:16:14.117 回答