- 3
- Hanam09
- 조회 수 533
저는 안전재난문자의 목록들을 저의 사이트에서 보고싶어 국민재난안전포털의 내부 API를 사용하여 실시간 문자 컨텐츠를 제공하려고 했습니다.
가져오려는 URL은 다음과 같습니다.
http://m.safekorea.go.kr/idsiSFK/neo/ext/json/disasterDataList/disasterDataList.json
그러나 어떠한 이유인지는 몰라도 저 API가 호출되지 않고 엉뚱한 더미데이터로 응답됩니다.
요청하기위해 사용된 저의 코드는 다음과 같습니다.
<?php header('Content-type: application/json'); $Request = curl_init('http://m.safekorea.go.kr/idsiSFK/neo/ext/json/disasterDataList/disasterDataList.json'); $header[] = "Referer: http://m.safekorea.go.kr/idsiSFK/neo/main_m/dis/disasterDataList.html"; $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; $header[] = "Accept-Language: ko,en-US;q=0.9,en;q=0.8,ko-KR;q=0.7"; curl_setopt($Request, CURLOPT_RETURNTRANSFER, true); curl_setopt($Request, CURLOPT_HTTPHEADER, $header); curl_setopt($Request, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'); echo curl_exec($Request);
저 포털에서 IP를 차단한걸까요?
저 API를 사용하기 위해서 어떻게 해야할까요?
+해결후 추가
제가 내린 결론은 PHP CURL의 자체적인 문제였습니다.
이거하나 찾으려고 Window Server 2016 돌리고 크롬 깔고 테스트하고 VPS운영체제를 몇개를 쓴건지 잘 모르겠습니다.
하루를 다 날렸네요.
작성자
댓글 3
2020.02.27. 23:45
gzip으로 인코딩이 되어 있어서 그렇습니다.
<?php header('Content-type: application/json; utf-8'); $url = 'http://m.safekorea.go.kr/idsiSFK/neo/ext/json/disasterDataList/disasterDataList.json'; $Request = curl_init(); curl_setopt($Request, CURLOPT_URL, $url); // gzip 인코딩 설정 curl_setopt($Request,CURLOPT_ENCODING , "gzip"); curl_setopt($Request, CURLOPT_RETURNTRANSFER, true); curl_setopt($Request, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'); echo curl_exec($Request); curl_close($Request);
2020.02.27. 23:58
오오!! 역시 humit님, 빠르게 문제점을 찾으시다니 대단하십니다!
인코딩이라는 간단한 문제였다니, 역시 저는 한참 멀었나봅니다.
정말로 감사합니다. 덕분에 궁금증이 해결되었어요~!
2020.02.28. 00:37
권한이 없습니다.
해결되었습니다 :)
PHP란 소스의 자체적인 문제인것 같네요.
cmd의 curl 로 해결했습니다.