String połączeniowy – problem z cudzysłowami

2018-03-18 14:19
0

Witam
Nie mogę sobie poradzić z poniższym ciągu aby dodać go do string loginData:

string loginData = String.Format("{"method":"global.login","params":{"userName":"admin","password":"","clientType":"Web3.0","loginType":"Direct"},"id":1}");

Podejrzewam że ma to związek z cudzysłowami ale nie wiem jak się za to zabrać.
Dzięki za podpowiedź

edytowany 1x, ostatnio: furious programming, 2018-03-18 23:24

Pozostało 580 znaków

2018-03-18 22:42
1

Tam, gdzie masz cudzysłów (poza tym zaczynającym i kończącym string) użyj \" i zadziała.

Pozostało 580 znaków

2018-03-19 07:52
0

Witam
Już wcześniej tego próbowałem. Po ułożeniu tak jak poniżej wyrzuca mi błąd:

string loginData = String.Format("{\"method\":\"global.login\",\"params\":{\"userName\":\"admin\",\"password\":\"\",\"clientType\":\"Web3.0\",\"loginType\":\"Direct\"},\"id\":1}");

"Ciąg formatu zawiera nieprawidłowy symbol zastępczy"
Pozdrawiam

edytowany 1x, ostatnio: Tomko, 2018-03-19 07:53

Pozostało 580 znaków

2018-03-19 09:07
0

Używasz string.Format, stąd on oczekuje, że wszelkie {0} i podobne będą zamieniane na odpowiednie wartości. Ze względu na to, że w ogóle tego nie używasz, możesz zrezygnować ze string.Format i użyć po prostu tworzenia nowego łańcucha.

Albo użyj {{ i }} żeby zmieniły się na zwykłe nawiasy klamrowe.

Pozostało 580 znaków

2018-03-19 13:52
0

@Tomko: Napisz jak ma wyglądać output (oczekiwana wartość tego stringa) czyli string loginData = "..."

Pozostało 580 znaków

2018-03-19 13:59
2018-03-19 14:32
0

Witam
Dzięki za zainteresowanie !
Chcę zalogować się na stronie kamery przez webbrowser. Przedstawię po kolei co już zrobiłem i co mam zamiar osiągnąć.

  1. Skopiowałem z firebug-a następujący wpis z POST-a :```
    {"method":"global.login","params":{"userName":"admin","password":"","clientType":"Web3.0","loginType":"Direct"},"id":1}
  2. Zubudowałem z waszą pomocą string login:
    string loginData = String.Format("{{\"method\":\"global.login\",\"params\":{{\"userName\":\"\",\"password\":\"haslo\",\"clientType\":\"Web3.0\",\"loginType\":\"Direct\"}},\"id\":152}}",userName,password,clientType,loginType);

    Na stronkę wchodzę, ale nie chce śmigać

  3. Cały kod wygląda tak

    //GET
    
            CookieContainer cookies = new CookieContainer();
    
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://adres kamery/");
    
            request.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0";
    
            request.Method = "GET";
    
            request.CookieContainer = cookies;
    
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    
            response.Close();
    
            //POST
    
            request = (HttpWebRequest)HttpWebRequest.Create("http://adres kamery");
    
            request.Method = "POST";
    
            request.CookieContainer = cookies;
            string userName = "user";
            string password = "haslo";
            string clientType = "Web3.0";
            string loginType = "Direct";
    
           string loginData = String.Format("{{\"method\":\"global.login\",\"params\":{{\"userName\":\"admin\",\"password\":\"haslo\",\"clientType\":\"Web3.0\",\"loginType\":\"Direct\"}},\"id\":152}}",userName,password,clientType,loginType);
    
            System.Text.Encoding encoding = System.Text.Encoding.UTF8;
    
            request.ContentType = "Content-Type: application/x-www-form-urlencoded\n\r";
    
            byte[] loginDataBytes = Encoding.ASCII.GetBytes(loginData);
    
            Stream postData = request.GetRequestStream();
    
            postData.Write(loginDataBytes, 0, loginDataBytes.Length);
    
            postData.Close();
    
            response = (HttpWebResponse)request.GetResponse();
    
            Stream stream = response.GetResponseStream();
    
            webBrowser1.Navigate("http://adres", "", loginDataBytes, request.ContentType);
    
            response.Close();
        }

Pozostało 580 znaków

2018-03-19 15:38
0

Nie przyglądałem się kodowi, bo jak na razie i tak masz źle tego stringa zapisanego. Tu masz poprawną wersję:

            string userName = "user";
            string password = "haslo";
            string clientType = "Web3.0";
            string loginType = "Direct";
            int id = 1;

            string loginData = $"{{\"method\":\"global.login\",\"params\":{{\"userName\":\"{userName}\",\"password\":\"{password}\",\"clientType\":\"{clientType}\",\"loginType\":\"{loginType}\"}},\"id\":{id}}}";

//OUTPUT
//{"method":"global.login","params":{"userName":"user","password":"haslo","clientType":"Web3.0","loginType":"Direct"},"id":1}

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0