공공데이터포털 : 공공데이터포털 (data.go.kr)
국가보훈처 보훈대상자 취업정보 : 오픈API 상세 | 공공데이터포털 (data.go.kr)
국가보훈처 오픈 API : 국가보훈처 (mpva.go.kr)
1. NET 5
2. HttpClient, XML
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
namespace jobsearchxml
{
public partial class Form1 : Form
{
DataTable dataTable = null;
public Form1()
{
InitializeComponent();
button1.Click += btn_SearchAsync;
dataTable = new DataTable();
dataTable.Columns.Add("순서", typeof(int));
dataTable.Columns.Add("회사명", typeof(string));
dataTable.Columns.Add("바로가기", typeof(string));
dataTable.Columns.Add("공고", typeof(string));
dataTable.Columns.Add("지역", typeof(string));
dataTable.Columns.Add("급여", typeof(string));
dataTable.Columns.Add("등록일자", typeof(string));
dataTable.Columns.Add("마감일자", typeof(string));
dataGridView1.DataSource = dataTable;
}
private async void btn_SearchAsync(object sender, EventArgs e)
{
textBox1.Clear();
dataTable.Rows.Clear();
using (var httpClient = new HttpClient())
{
string requestUrl = "https://vnet.go.kr/empn/jobsearchxml.do?" + Category + "&" + Jobtype + "&" + Location;
textBox1.Text += requestUrl + Environment.NewLine;
// 비동기 요청
var responsestream = await httpClient.GetStreamAsync(requestUrl);
// 응답 데이터 스트림 -> XmlDocumnet
XmlDocument document = new XmlDocument();
using (Stream stream = responsestream)
{
document.Load(stream);
}
// 총 카운트
int listCnt = 0;
XmlNode listCntNode = document.SelectSingleNode("/root/total_count");
listCnt = Convert.ToInt32(listCntNode.InnerText);
textBox1.Text += listCnt.ToString();
// 카운트가 0 이상일 때만
if (listCnt > 0)
{
// xml 파싱 후 DataGridView에 추가
XmlNodeList xmlNodeList = document.GetElementsByTagName("item");
int idx = 1;
foreach (XmlNode xmlitem in xmlNodeList)
{
dataTable.Rows.Add(idx, xmlitem["company"].InnerText, xmlitem["link"].InnerText, xmlitem["contents"].InnerText, xmlitem["area"].InnerText, xmlitem["pay"].InnerText, xmlitem["regdate"].InnerText, xmlitem["enddate"].InnerText);
idx++;
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
// 직종 추가
comboBox1.Items.Clear();
comboBox1.Items.Add("전체");
comboBox1.Items.Add("군관련직위");
comboBox1.Items.Add("사무관리,경영,회계,금융");
comboBox1.Items.Add("교육,교사,강사");
comboBox1.Items.Add("법률,경찰,보안,경비");
comboBox1.Items.Add("보건,의료,사회,복지");
comboBox1.Items.Add("문화,예술,방송,디자인");
comboBox1.Items.Add("운정,운송,여행,영업판매");
comboBox1.Items.Add("건설,건축,토목,시설관리");
comboBox1.Items.Add("기계,재료,화학,섬유");
comboBox1.Items.Add("전기,전자,항공,조선");
comboBox1.Items.Add("IT,전산,정보통신");
comboBox1.Items.Add("음식,식품,단순노무,해외일자리");
comboBox1.SelectedIndex = 0;
// 일자리 추가
comboBox2.Items.Clear();
comboBox2.Items.Add("전체");
comboBox2.Items.Add("군관련직위");
comboBox2.Items.Add("민간부문");
comboBox2.Items.Add("공공부문");
comboBox2.Items.Add("사회적");
comboBox2.SelectedIndex = 0;
// 근무지 추가
comboBox3.Items.Clear();
comboBox3.Items.Add("전체");
comboBox3.Items.Add("서울");
comboBox3.Items.Add("경기");
comboBox3.Items.Add("인천");
comboBox3.Items.Add("부산");
comboBox3.Items.Add("대구");
comboBox3.Items.Add("광주");
comboBox3.Items.Add("대전");
comboBox3.Items.Add("울산");
comboBox3.Items.Add("세종");
comboBox3.Items.Add("강원");
comboBox3.Items.Add("경남");
comboBox3.Items.Add("경북");
comboBox3.Items.Add("전남");
comboBox3.Items.Add("전북");
comboBox3.Items.Add("충남");
comboBox3.Items.Add("충북");
comboBox3.Items.Add("제주");
comboBox3.Items.Add("해외");
comboBox3.SelectedIndex = 0;
}
private string Category
{
get
{
string result = "category=";
/*
군관련직위 = '1'
사무관리,경영,회계,금융 = '2'
교육,교사,강사 = '3'
법률,경찰,보안,경비 = '4'
보건,의료,사회,복지 = '5'
문화,예술,방송,디자인 = '6'
운정,운송,여행,영업판매 = '7'
건설,건축,토목,시설관리 = '8'
기계,재료,화학,섬유 = '9'
전기,전자,항공,조선 = '10'
IT,전산,정보통신 = '11'
음식,식품,단순노무,해외일자리 = '12'
*/
switch (comboBox1.SelectedIndex)
{
case 0:
result = string.Empty;
break;
default:
result += comboBox1.SelectedIndex.ToString();
break;
}
return result;
}
}
private string Jobtype
{
get
{
string result = "jobtype=";
/*
군관련직위일자리 = '1'
민간부문일자리 = '2'
공공부문일자리 = '3'
사회적일자리 = '4'
입력이 없을 시 전체직종
*/
switch (comboBox2.SelectedIndex)
{
case 0:
result = string.Empty;
break;
default:
result += comboBox2.SelectedIndex.ToString();
break;
}
return result;
}
}
private string Location
{
get
{
string result = "location=";
/*
서울 = '1'
경기 = '2'
인천 = '3'
부산 = '4'
대구 = '5'
광주 = '6'
대전 = '7'
울산 = '8'
세종 = '9'
강원 = '10'
경남 = '11'
경북 = '12'
전남 = '13'
전북 = '14'
충남 = '15'
충북 = '16'
제주 = '17'
해외 = '18'
입력이 없을 시 전체직종
*/
switch (comboBox3.SelectedIndex)
{
case 0:
result = string.Empty;
break;
default:
result += comboBox3.SelectedIndex.ToString();
break;
}
return result;
}
}
}
}
'C#' 카테고리의 다른 글
[C#] PDF 읽기 (0) | 2021.02.27 |
---|---|
[C#] CPU, RAM, HDD 사용량 및 OS Version, Last boottime 확인 (0) | 2021.02.10 |
[C#] 카카오페이지 크롤링 (0) | 2021.01.01 |
[C#] gRPC 와 LiteDB 사용 (0) | 2020.12.15 |
[C#] TCP Listener을 이용한 비동기 (2) | 2020.12.04 |