728x90

스승도 없이 독학으로 취미로 프로그램을 배우다보니 막히면 중단되고 방법을 찾으면 약간 진도가 나간다.

배우면서 느끼는 것은 기본기가 중요하다는 점이다.

기능 검색하다가 우연히 http://raago.tistory.com/20 에서 함수명을 직관적으로 이해되게 작성하는 것이 정말 중요하다는 걸 새삼 느꼈다.

앞으로는 자료 검색을 하더라도 허투루 보지 않고 응용해서 내것으로 만들어야겠다.


자료 검색을 하면 대부분 POST 처리 부분이 좀 부족하게 검색된다.

POST 데이터 입력부분까지 고려해서 만들었다.

서버에서 던져주는 결과를 가져오는 함수니까 GetDataFromWeb 으로 하면 맞다.

결과 형식이 JSON이면 Deserialize 하는 것은 별도로 처리해야 한다.


string GetJDataFromWeb(string url, string postData)
 {
     try
     {
         var webRequest = (HttpWebRequest)WebRequest.Create(url);

         if (postData != null)
         {
             webRequest.Method = "POST";
             byte[] sendData = UTF8Encoding.UTF8.GetBytes(postData);
             webRequest.ContentType = "application/x-www-form-urlencoded";
             webRequest.ContentLength = sendData.Length;

             Stream dataStream = webRequest.GetRequestStream();
             dataStream.Write(sendData, 0, sendData.Length);
             dataStream.Close();
         }

         var webResponse = (HttpWebResponse)webRequest.GetResponse();
         if ((webResponse.StatusCode == HttpStatusCode.OK) && (webResponse.ContentLength > 0))
         {
             var readStrem = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8, true);

             string reader = readStream.ReadToEnd().Trim();

             readStrem.Close();

             webResponse.Close();

             return @reader.ReadToEnd().Trim();
         }
         else
         {
             MessageBox.Show(string.Format("Status code == {0}", webResponse.StatusCode));
             return null;
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
         return null;
     }
 }


파일을 첨부하는 경우는 테스트를 못해봤지만, 파일 첨부한 경우에는 별도 함수를 만들어야 할 것으로 예상된다.


가져온 데이터 형식이 JSON String 인 경우 이 문자열을 Deserialize 하는 함수 부분은

string URL = "http://IPaddress/cat1comboBox.php";
string json = GetJSONFromWeb(URL, null);
if (json != null)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    // Json String 를 객체로 반환 (역직렬화)
    JsonHelper category1 = serializer.Deserialize<JsonHelper>(json);

    datagGridView1 에 연결하거나, comboBox 에 연결 처리 추가하면 된다.
}


구글링 결과가 대부분 외국 자료이다보니 영문 중심이라 한글을 제대로 보여주지 못한다.

JavaScriptSerializer serializer = new JavaScriptSerializer(); 는 한글을 제대로 표현해준다.


코드를 구현해서 실제 적용을 해보니 데이터를 많이 가져올 수 없다. ㅠㅠㅠ

728x90
블로그 이미지

Link2Me

,