2014-10-15 2 views
1

Мне нужна помощь, определяющая направление для этого. Мне просто нужна программа для отправки на сервер определенного фиксированного необработанного форматированного JSON-сообщения на определенном IP-адресе и порту, тогда ему нужно прослушивать ответ на заданном порту и затем выписывать необработанный ответ на консоль.Как отправлять и получать необработанные JSON?

Я нашел несколько тем, посвященных HTTP-запросам JSON, но я не думаю, что я на правильном пути. Это код, который я пытаюсь адаптировать.

public static void send_json() 
{ 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://10.211.55.5:7752"); 
    request.ContentType = "application/json; charset=utf-8"; 
    request.Accept = "application/json"; 
    request.Method = "POST"; 
    using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) 
    { 
     writer.Write("{\"request\": \"get_menu\", \"checksum\": \"\", \"table_state\": {\"table_id\": \"1\", \"waiter_id\": \"1001\"}}"); 
    } 

    WebResponse response = request.GetResponse(); 
    Stream stream = response.GetResponseStream(); 
    string json = ""; 

    using (StreamReader reader = new StreamReader(stream)) 
    { 
     while (!reader.EndOfStream) 
     { 
      json += reader.ReadLine(); 
     } 
     Console.Write(json); 
    } 
} 
+1

Что не так с размещенным кодом? – gunr2171

+1

Вне темы, но вы можете использовать 'read.ReadToEnd()' вместо добавления к строке. – Matthew

+1

Это не на 100% понятное, что вы ищете, но похоже, что вы хотите посмотреть Розетки. Они являются базовой технологией HTTP-запросов, которые имеют намного больше накладных расходов. Поэтому, если вы просто * хотите отправлять и получать JSON, без заголовков или чего-то еще (опять же, как это звучит, как вы хотите), попробуйте изучить их. –

ответ

0

Следующий код закончился работой! Спасибо, что указали мне в правильном направлении парней!

private void pos_test_button_Click(object sender, EventArgs e) 
    { 
     System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient(); 
     clientSocket.Connect("127.0.0.1", 7777); 

     string get_menu_request = "{\"request\": \"get_menu\"}"; 
     NetworkStream serverStream = clientSocket.GetStream(); 
     byte[] outStream = System.Text.Encoding.ASCII.GetBytes(get_menu_request); 
     serverStream.Write(outStream, 0, outStream.Length); 
     serverStream.Flush(); 

     byte[] inStream = new byte[10025]; 
     serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize); 
     string _returndata = System.Text.Encoding.ASCII.GetString(inStream); 

     test_log_box.AppendText("\r\n\r\nPOS Connection Test: " + "\r\n" + _returndata); 
    } 
Смежные вопросы