Как отправить запрос URI через GET из C # в PHP и получить символы, закодированные как браузер? - PullRequest
0 голосов
/ 12 января 2012

Я делаю GET из C #.

var result = webClient.DownloadString(
 Microsoft.JScript.GlobalObject.encodeURI(
   "http://www.example.com?value=contacts[contact][0][name]=test man"
);

Это приводит к получению сайта PHP: "значение = контакты% 5Bcontact% 5D% 5B0% 5D% 5Bname% 5D = тест% 20man"

После декодирования в PHP

urldecode($value)

"значение = контакты% 5Bконтакт% 5D% 5B0% 5D% 5Bname% 5D = тестовый человек"

Итак, ошибка на [

Но когда я вставляю URL в браузер (IE8 или Chrome), я получаю следующие результаты на получающем сайте PHP: "значение = контакты [контакты] [0] [имя] = тест% 20man"

IE. Браузер отправляет запрос (URL) в работоспособной кодировке, мой код - нет.

Как использовать GET с правильной кодировкой, как это делают браузеры?

1 Ответ

0 голосов
/ 13 января 2012

Было много символов с более высокими значениями Code Points, которым требуется% 25 для анализа прямо в PHP. Ex. å =% C3% E5 в кодировке .NET но должно быть: % 25C3% 25E5

Итак, я сделал функцию для исправления этого, она не завершена для повторного использования, но будет, если все остальные коды будут добавлены.

        var urlCodes = new [] { "20", "C3", "84", "85", "96", "A4", "A5", "B6", "2C", "C2", "A0", "2F", "40", "3A" };

        foreach (var stringsUrlCodes in urlCodes)
        {
            encodedUrl = encodedUrl.Replace("%" + stringsUrlCodes.ToString(), "%25" + stringsUrlCodes.ToString().Replace("%", string.Empty));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...