2009-08-06 3 views
2

Я использую класс 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"); 

EDIT 2: Если я помещаю получившийся URL в браузер, все работает. Но если я запускаю его через WebRequest класс, результаты URL, как это называется без «/ разделенных косой чертой» часть

+1

В вашем примере нет строки запроса. Вышеуказанная строка является частью URL-адреса после вопросительного знака. Хотя это может немного напоминать запрос, это, часть пути. –

+0

Server.UrlEncode удалит «/», так что это не испортит ваш веб-запрос, если предположить, что он использует URL-маршрутизацию, вы просто изменили путь. – Charlie

+0

@ F5ToDebug: Server.UrlEncode преобразует '/' до '% 2f'. Но сайт, я делаю запрос, все еще вижу его как '/' – Kamarey

ответ

1

Если это ваш фактический код вам не хватает:

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

UrlEncode его , (Вам нужно будет ссылка на System.Web)

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

Вы должны только кодировать URL-адреса, а не весь URL-адрес, и это уже сделано ... – Guffa

+0

Да, вы правы - должны быть закодированы только значения (предполагается, что они еще не были). –

0

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

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

Данная часть URL:

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

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

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

0

?

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

0

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

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