Веб-запрос с котировками

Я хочу создать небольшой удаленный инструмент для школьного проекта. (XBMC)

Сначала я бы сказал, что строковая переменная не включает кавычки, а \", которая должна отображать кавычки в текстовом поле и где-то еще. Во-первых, я имею в виду, что C # также делает кавычки с помощью этого трюка в веб-запросе, но он не Кроме того, я могу получить доступ к своему устройству, но ResponseReader не дает никакого ответа, но это не важно, потому что я могу удалить эту часть в случае необходимости.

Вот пример для переменной Übergabe:

{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"Input.Up\"}

textBox2.Text включает пароль, а textBox1.Text включает сервер.


Как мне это решить?

Я пытаюсь заставить этот WebRequest (метод) работать:

   private void Xorg (string Übergabe)
        {
            try
            {
                WebRequest MyRequest;
                MyRequest = WebRequest.Create(("http://root:") + (textBox2.Text) + ("@") + (textBox1.Text) + ("/jsonrpc?request=") + (Übergabe));
                MyRequest.Method = "GET";
                textBox3.Text = ("http://root:*****") + ("@") + (textBox1.Text) + ("/jsonrpc?request=") + (Übergabe);
                Stream ResponseStream;
                ResponseStream = MyRequest.GetResponse().GetResponseStream();
                StreamReader ResponseReader = new StreamReader(ResponseStream);

                while (ResponseReader.ReadLine() != null)
                {
                    listBox2.Items.Add(ResponseReader.ReadLine());
                }
            }
            catch
            { listBox2.Items.Add("Server antwortet nicht! / Fehlerhafte Eingabe!"); }
       }

person user3792550    schedule 01.07.2014    source источник
comment
Вам нужно только экранировать символы с обратной косой чертой, когда вы пишете код. Фактическое содержимое строк не обязательно должно содержать экранированные символы. Кроме того, вам не нужно заключать все в скобки (...)...   -  person Simon Whitehead    schedule 01.07.2014
comment
Но я написал часть URL-адреса, которая включает кавычки, в строковую переменную   -  person user3792550    schedule 01.07.2014


Ответы (1)


Используйте WebUtility.UrlEncode:

WebRequest MyRequest = WebRequest.Create(("http://root:") + (textBox2.Text) + ("@") + (textBox1.Text) + ("/jsonrpc?request=") + WebUtility.UrlEncode(Übergabe));

" необходимо преобразовать в %22. С UrlEncode вы гарантируете, что все символы будут правильно преобразованы

person Guillaume    schedule 01.07.2014
comment
Здравствуйте, метод Webutility не имеет этой опции в моей версии :( Есть ли альтернативные методы? - person user3792550; 01.07.2014
comment
@ user3792550, попробуйте System.Uri.EscapeDataString(Übergabe) - person Guillaume; 01.07.2014
comment
Теперь я отлично работаю (System.Uri), но я не могу получить URL-адрес с преобразованной строкой.... - person user3792550; 01.07.2014
comment
Вот URL-адрес, включающий преобразованную строку: root:****@**.****.**** .****:***/jsonrpc?request=%7B%22jsonrpc%22%3A%222.0%22%2C%22method%22%3A%22System.Shutdown%22%2C%22id%22%3A1%7D - person user3792550; 01.07.2014
comment
@user3792550 user3792550 Кажется, хорошо, у вас может быть другая проблема, кроме кодировки. Попробуйте отправить необработанный запрос с помощью скрипача или введите URL-адрес в браузере и проверьте результат. - person Guillaume; 01.07.2014
comment
Ах, я знаю! У меня нет аутентификации для этого, но почему? Можете ли вы объяснить, почему я не могу использовать аутентификацию, такую ​​​​как root: пароль.. Пожалуйста :) (Это работает в браузере) - person user3792550; 01.07.2014
comment
@user3792550 user3792550, задайте другой вопрос в SO или выполните поиск в Google;) Вы ищете Basic Authentication и WebRequest. - person Guillaume; 01.07.2014