반응형
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Xml;
namespace WeatherForecastApp
{
class Program
{
static async Task Main(string[] args)
{
// 기상청 API URL
string url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst";
string serviceKey = "iZz7y8YLflOFKthnmJCobG%2F%2FSwWEEUYSGbGjBVy8erxgGicJ0eNZ0ZeVtDz8ZxjGMWNCsBimDtnraAPHUP0JcA%3D%3D"; // 여기에 발급받은 서비스 키를 입력하세요.
string numOfRows = "10"; // 한 페이지에 보여줄 데이터 수
string pageNo = "1"; // 페이지 번호
// 영월의 nx, ny 좌표
string nx = "56";
string ny = "128";
// API 요청 URL 구성
string requestUrl = $"{url}?serviceKey={Uri.EscapeDataString(serviceKey)}&numOfRows={numOfRows}&pageNo={pageNo}&base_date=20241113&base_time=0500&nx={nx}&ny={ny}";
using (HttpClient client = new HttpClient())
{
try
{
// API 호출
HttpResponseMessage response = await client.GetAsync(requestUrl);
response.EnsureSuccessStatusCode(); // 응답 상태 코드 확인
// 응답 내용 읽기
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("API 응답 내용:");
Console.WriteLine(responseBody); // 응답 내용 출력
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseBody);
// 온도와 풍속 값 초기화
string temperature = null;
string windSpeed = null;
// item 요소를 순회
foreach (XmlNode item in xmlDoc.SelectNodes("//item"))
{
string category = item["category"]?.InnerText; // null 체크 추가
string value = item["fcstValue"]?.InnerText; // null 체크 추가
if (category == "TMP")
{
temperature = value;
}
else if (category == "WSD")
{
windSpeed = value;
}
}
// 결과 출력
Console.WriteLine($"온도: {temperature ?? "정보 없음"}도");
Console.WriteLine($"풍속: {windSpeed ?? "정보 없음"} m/s");
}
catch (HttpRequestException e)
{
Console.WriteLine($"요청 오류: {e.Message}");
}
catch (XmlException e)
{
Console.WriteLine($"XML 파싱 오류: {e.Message}");
}
catch (Exception e)
{
Console.WriteLine($"알 수 없는 오류: {e.Message}");
}
}
}
}
}
api
using System;
namespace unicoti {
class Program {
static void Main()
{
int t = 0; //온도
int h = 0; //습도
int d = 0; //미세먼지 농도
int w = 0; //바람세기 (풍속)
//0 : 나가지 마, 1: 별로, 2: 좋음, 3: 최적
int[] intNumbers = Array.ConvertAll((Console.ReadLine()??"").Split(), int.Parse);
t = intNumbers[0];
h = intNumbers[1];
d = intNumbers[2];
w = intNumbers[3];
if(t < 10) {
t = 1;
} else if (t > 10 && t < 20) {
t = 2;
} else if (t > 20 && t < 30) {
t = 3;
} else {
t = 0;
}
if(h < 30) {
h = 2;
} else if (h > 30 && h < 60) {
h = 3;
} else if (h > 60 && h < 80) {
h = 1;
} else {
h = 0;
}
if(d < 30) {
d = 3;
} else if (d > 30 && d < 80) {
d = 2;
} else if (d > 80 && d < 150) {
d = 1;
} else {
d = 0;
}
if(w < 5) {
w = 3;
} else if (w > 5 && w < 10) {
w = 2;
} else if (w > 10 && w < 15) {
w = 1;
} else {
w = 0;
}
int score = t + h + d + w;
if(score > 10) {
Console.WriteLine("나가기 최적!");
} else if(score > 7) {
Console.WriteLine("평범한 날씨");
} else if(score > 4) {
Console.WriteLine("안나가면 안될까?");
} else {
Console.WriteLine("나가면 안돼...");
}
}
}
}
실제 로직
다음에 와서 하나 더 쓸지 모르겠지만 혹시나 안쓰면
아마 이게 오늘 블로그 완료 7일차가 될 듯.
반응형
'일지' 카테고리의 다른 글
오늘 블로그 완료 9일차 (5) | 2024.11.15 |
---|---|
오늘 블로그 완료 8일차 (7) | 2024.11.14 |
오늘 블로그 완료 6일차 (1) | 2024.11.12 |
소원의 섬 - 11편 (오늘 블로그 완료 4일차) (0) | 2024.11.11 |
오늘 블로그 완료 - 4일차 (3) | 2024.11.10 |
댓글