String połączeniowy – problem z cudzysłowami

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ź

1

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

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

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.

0

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

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();
    }
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}

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