스승도 없이 독학으로 취미로 프로그램을 배우다보니 막히면 중단되고 방법을 찾으면 약간 진도가 나간다.
배우면서 느끼는 것은 기본기가 중요하다는 점이다.
기능 검색하다가 우연히 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(); 는 한글을 제대로 표현해준다.
코드를 구현해서 실제 적용을 해보니 데이터를 많이 가져올 수 없다. ㅠㅠㅠ
'C# > 통신' 카테고리의 다른 글
C# webFile 다운로드 함수 (0) | 2016.11.12 |
---|---|
C# GetAsyncDataFromWeb (0) | 2016.08.21 |
C# comboBox 에 Text, Value 추가 및 POST, JSON (0) | 2016.08.19 |
C# comboBox 에 Text, Value 추가, 서버와 JSON 연동 (0) | 2016.08.19 |
C# JSON 과 dataGridView 연동 개념 이해 (0) | 2016.08.18 |