Проблема с косой чертой в строке запроса - PullRequest
2 голосов
/ 06 августа 2009

Я использую класс WebRequest для отправки запроса на какой-либо сайт. Строка запроса содержит косую черту (/), которая приводит к тому, что URL-адрес будет вырезан сайтом, поскольку он не видит его как часть строки запроса.

Строка запроса: «мои параметры / разделены косой чертой».

Запрос:

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

Чего мне не хватает?

EDIT: После того, как все ответы здесь являются обновлением:

Я ошибся насчет строки запроса, на самом деле это не строка запроса, но URL должен выглядеть (без "?"):

"http://www.somesime.com/q-my+params+%2f+separated+by+slash"

URL "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-адрес будет выглядеть так, как он был назван без "/ разделенных косой чертой" части

Ответы [ 7 ]

1 голос
/ 11 августа 2010

Вам нужно взглянуть на параметр Apache AllowEncodedSlashes

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

Вы должны иметь возможность включить это через .htaccess или httpd_conf

1 голос
/ 06 августа 2009

Если это ваш реальный код, вы пропускаете?:

var request = WebRequest.Create("http://www.somesime.com/?q=my+params+%2f+separated+by+slash");
0 голосов
/ 21 апреля 2014

Используйте вот так

$ qrypic = 'INSERT INTO tbl_propics (ИД пользователя, номер, имя изображения, пропика)

0 голосов
/ 06 августа 2009

(Да, это то, чего вам не хватает.:)

0 голосов
/ 06 августа 2009

Эта часть URL:

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

на самом деле является продолжением URL, веб-сайт, вероятно, использует какую-то маршрутизацию URL. Строки запроса обозначаются знаком «?» и разделены '&'.

Если вам действительно нужно удалить '/' из URL, тогда HttpUtility.UrlEncode будет правильным способом, но это не принесет вам пользы, поскольку любая кодировка, выполненная для URL, почти наверняка приведет к сбою вашего WebRequest .

0 голосов
/ 06 августа 2009

ты забыл поставить "?" перед именем ключа, поэтому попробуйте:

var request = WebRequest.Create("http://www.somesime.com?q=my+params+%2f+separated+by+slash");
0 голосов
/ 06 августа 2009

UrlEncode it. (Вам понадобится ссылка на System.Web)

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