WIZnet Developer Forum

[WIZ550web-EVB] Evaluation 보드 webrequest POST 문의

안녕하세요.

윈도우 응용프로그램에서 WIZ550web-EVB 보드를 컨트롤 하려고 합니다.
dout.cgi 를 사용하던중 WebRequest로 보내는 Body data와 상관없이 0번 Output이 0(ON)으로 동작됩니다.
Body 정보가 제대로 전달되지 않은것 같아서 문의드립니다.
Respone은 0 값을 받고 있습니다.

감사합니다.

아래는 사용한 코드입니다.

public string PostIO()
{
string apiURL = “http://192.168.77.104/dout.cgi”;

        // POST 보낼 데이터
        string dataParams = string.Format("pin=1&val=0");

        // 요청 String -> 요청 Byte 변환
        byte[] byteDataParams = UTF8Encoding.UTF8.GetBytes(dataParams);

        /////////////////////////////////////////////////////////////////////////////////////
        /* POST */
        // HttpWebRequest 객체 생성, 설정
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiURL);
        request.ContentType = "application/x-www-form-urlencoded;";
        request.Method = "POST";
        request.ContentLength = byteDataParams.Length;
        //////////////////////////////////////////////////////////////////////////////////////

        using (Stream st = request.GetRequestStream())
        {
            st.Write(byteDataParams, 0, byteDataParams.Length);
            st.Flush();
        }

        try
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            string status = response.StatusCode.ToString();
            if (status == "OK")
            {
                Stream stream = response.GetResponseStream();

                string sResultJson = new StreamReader(stream).ReadToEnd().Trim();
                return sResultJson;
            }

            //st.Close();
            response.Close();
        }
        catch (WebException e)
        {
            var resp = new StreamReader(e.Response.GetResponseStream()).ReadToEnd();
            return resp;
        }
        return null;
    }

확인해본 결과 Nagle 알고리즘 때문에 그랬네요.
이제 정상작동합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.