2014-10-15 4 views
1

이것을 취할 방향을 결정하는 데 도움이 필요합니다. 난 그냥 주어진 IP 및 포트에서 서버에 고정 원시 간단한 JSON 형식의 메시지를 보낼 프로그램이 필요합니다 다음 주어진 포트에서 응답을 듣고 다음 원시 응답을 콘솔에 쓸 필요가있다.원시 JSON을 보내고받는 방법은 무엇입니까?

JSON http 요청을 수행 할 때 몇 가지 주제가 있지만 제대로 된 것 같지는 않습니다. 이것은 적응하려고하는 코드입니다.

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을 머리글이나 기타없이 보내고 받기를 원한다면 (다시 말하면 원하는대로 들리 겠지만), 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); 
    } 
관련 문제