국세청_상태조회 서비스 api 활용방법 도와주세요...

VBA
작성자
탄만두
작성일
2022-11-10 01:11
조회
97
엑셀버전 : M365

운영체제 : 윈도우10

https://www.data.go.kr/data/15081808/openapi.do

 

오빠두엑셀님이 추가기능으로 올려주신

국세청_사업자등록정보  상태조회 서비스를 api 예제로 만들어 보고 있습니다..

제가 잘 몰라서 오빠두님 크롤링관련 멤버쉽 영상 정말 다 보았습니다.. 반복되는게 있어서 영상 볼때는 자신있었지만

따라해보려니 정말 답답해 죽겠습니다.. 도와주세요..

 

아래 제가 작성한 코드문(따라한것 뿐이지만...ㅠㅠ)인데 원인을 모르겠습니다..

아마 위 링크 api 활용방법(가이드)에 아래처럼 되어 있는걸 URL에 표시해서 그런것 같은데 이걸 어떻게 해야 하나요...?

  • 그 외 b_no 등의 JSON string은 반드시 body로 넣어 호출해주세요.

 

 

Sub Hometax1()
 
Dim sKey As String
Dim rtnType As String
Dim b_no As String '하이픈없이 사업자번호 숫자 10자리
Dim URL As String
 
sKey = (발급받은 인증키를 인코딩/디코딩형식으로 모두 해봤습니다..)
 
rtnType = "XML"
b_no = "1231212345" '사업자번호 숫자만 10자리
 
URL = "http://api.odcloud.kr/api/nts-businessman/v1/validate?serviceKey=[" & sKey & "]&returnType=" & rtnType & "&b_no=" & b_no
Debug.Print URL
Stop
 
Dim htmlResult As Object
Dim htmlString As String
 
Set htmlResult = GetHttp(URL, , , , , "POST")
htmlString = htmlResult.body.innerHTML
 
Stop
Function GetHttp(URL As String, Optional formText As String, _
                                Optional isWinHttp As Boolean = False, _
                                Optional RequestHeader As Variant, _
                                Optional includeMeta As Boolean = False, _
                                Optional RequestType As String = "GET") As Object
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ GetHttp 함수
'▶ 웹에서 데이터를 받아옵니다.
'▶ 인수 설명
'_____________URL                         : 데이터를 스크랩할 웹 페이지 주소입니다.
'_____________formText                 : Encoding 된 FormText 형식으로 보내야 할 경우, Send String에 쿼리문을 추가합니다.
'_____________isWinHttp               : WinHTTP 로 요청할지 여부입니다. Redirect가 필요할 경우 True로 입력하여 WinHttp 요청을 전송합니다.
'_____________RequestHeader       : RequestHeader를 배열로 입력합니다. 반드시 짝수(한 쌍씩 이루어진) 개수로 입력되어야 합니다.
'_____________includeMeta           : TRUE 일 경우 HTML 문서위로 ResponseText를 강제 입력합니다. Meta값이 포함되어 HTML이 작성되며 innerText를 사용할 수 없습니다. 기본값은 False 입니다.
'_____________RequestType           : 요청방식입니다. 기본값은 "GET"입니다.
'▶ 사용 예제
'Dim HtmlResult As Object
'Set htmlResult = GetHttp("https://www.naver.com")
'msgbox htmlResult.body.innerHTML
'###############################################################
 
Dim oHTMLDoc As Object: Dim objHTTP As Object
Dim HTMLDoc As Object
Dim i As Long: Dim blnAgent As Boolean: blnAgent = False
Dim sUserAgent As String: sUserAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36"
 
Application.DisplayAlerts = False
 
If Left(URL, 4) <> "http" Then URL = "http://" & URL
 
Set oHTMLDoc = CreateObject("HtmlFile")
Set HTMLDoc = CreateObject("HtmlFile")
 
If isWinHttp = False Then
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Else
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
End If
 
objHTTP.setTimeouts 3000, 3000, 3000, 3000
objHTTP.Open RequestType, URL, False
If Not IsMissing(RequestHeader) Then
    Dim vRequestHeader As Variant
    For Each vRequestHeader In RequestHeader
        Dim uHeader As Long: Dim Lheader As Long: Dim steps As Long
        uHeader = UBound(vRequestHeader): Lheader = LBound(vRequestHeader)
        If (uHeader - Lheader) Mod 2 = 0 Then GetHttp = CVErr(xlValue): Exit Function
        For i = Lheader To uHeader Step 2
            If vRequestHeader(i) = "User-Agent" Then blnAgent = True
            objHTTP.setRequestHeader vRequestHeader(i), vRequestHeader(i + 1)
        Next
    Next
End If
If blnAgent = False Then objHTTP.setRequestHeader "User-Agent", sUserAgent
 
objHTTP.send formText
 
If includeMeta = False Then
    With oHTMLDoc
        .Open
        .Write objHTTP.responseText
        .Close
    End With
Else
    oHTMLDoc.body.innerHTML = objHTTP.responseText
End If
 
Set GetHttp = oHTMLDoc
Set oHTMLDoc = Nothing
Set objHTTP = Nothing
 
Application.DisplayAlerts = True
 
End Function

 

스크랩
공유
전체 2

  • 2022-11-10 11:06
    채택된 답변

    @탄만두 님 제가 만든 샘플입니다.

    POST방식에서 요청하는 body에 넣어 달라는 것은 아래처럼 구현하시면 됩니다.

    Key는 URL Encode 된 것을 사용합니다.

    Function getBizNumber(b_No As String)
        Dim msXML As Object: Set msXML = CreateObject("MSXML2.XMLHTTP.6.0")
        Dim sBody As String, result As String
        
        ServiceURL = "http://api.odcloud.kr/api/nts-businessman/v1/status?"
        ServiceURL = ServiceURL & "serviceKey=" & DataKeyEncode & "&returnType=XML"
        sBody = "{""b_no"":[""" & b_No & """]}" 
    
        With msXML
            .Open "POST", ServiceURL, False
            .setRequestHeader "Content-Type", "application/json"
            .Send sBody
            While .readyState <> 4: DoEvents: Wend
            result = .ResponseText
        End With
        getBizNumber = result
        
    EXIT_RUN:
        Set msXML = Nothing
    
    End Function

     


    • 2022-11-10 17:55

      @원조백수 님 body는 샌드형식으로 보내는 것이군요 ㅠㅠ

      정말 감사하고 감사합니다 !!!! 복받으세요!!


전체 8,632
번호 카테고리 제목 작성자 작성일 추천 조회
알림
🎉 오피스 분야 30주 연속 1위! - 「 진짜쓰는 실무엑셀 」 전자책이 출간되었습니다! (37)
오빠두엑셀 | 2022.09.28 | 추천 9 | 조회 3066
오빠두엑셀 2022.09.28 9 3066
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (110)
오빠두엑셀 | 2021.10.28 | 추천 136 | 조회 8760
오빠두엑셀 2021.10.28 136 8760
45322 함수/공식
New 엑셀에서 함수로 표를 가져올때, 배열(위치)도 변경 가능할까요..? 엑셀파일첨부파일 (1)
정지훈 | 10:57 | 추천 0 | 조회 5
정지훈 10:57 - 5
45321 차트/그래프
New 엑셀 DB자료를 차트(가로 막대줄) 로 바꾸고싶은데 문의드립니다 ㅠㅠ 엑셀파일첨부파일
정지훈 | 10:47 | 추천 0 | 조회 7
정지훈 10:47 - 7
45316 기능/도구
New XIMAGE 추가기능이 제 엑셀기능을 제한하고 있습니다. 도저히 해결이 안되네요 도와주세요
베이보이 | 06:32 | 추천 0 | 조회 12
베이보이 06:32 - 12
45313 함수/공식
New 엑셀 순위표 관련 질문.. 엑셀파일첨부파일
조긍 | 00:34 | 추천 0 | 조회 29
조긍 00:34 - 29
45305 함수/공식
New 예상매출을 어떤식으로 접근하면 좋을까요? 첨부파일 (4) 답변완료
karism**** | 2022.12.06 | 추천 0 | 조회 52
karism**** 2022.12.06 - 52
45304 함수/공식
New 필터 적용 후 필터 값에 맞게 원하는 데이터를 구할 수 있는 함수 질문 엑셀파일
juyoun**** | 2022.12.06 | 추천 0 | 조회 22
juyoun**** 2022.12.06 - 22
45299 함수/공식
New 조건부서식 색상 표시 조건 중, 참 거짓 판별 조건 설정 궁금해요! 첨부파일 (6) 답변완료
고식이 | 2022.12.06 | 추천 0 | 조회 32
고식이 2022.12.06 - 32
45298 함수/공식
New 숫자와 텍스트에서 일부 숫자 추출, 가공하기 엑셀파일
포에버하윤둥이 | 2022.12.06 | 추천 0 | 조회 35
포에버하윤둥이 2022.12.06 - 35
45295 함수/공식
New DUTOOL 중에 kakaoAdress 관련 문의입니다. 첨부파일 (1)
갠듬갸 | 2022.12.06 | 추천 0 | 조회 19
갠듬갸 2022.12.06 - 19
45294 함수/공식
New 기간 내 해당하는 셀에 배경색을 칠하는 조건부서식... 방법이 없을까요? 엑셀파일첨부파일 (4) 답변완료
질문물음표 | 2022.12.06 | 추천 0 | 조회 36
질문물음표 2022.12.06 - 36
45289 함수/공식
New 이게 왜 되는지 설명해주세요! 엑셀파일 (3) 답변완료
뉴비 신입사원 | 2022.12.06 | 추천 0 | 조회 59
뉴비 신입사원 2022.12.06 - 59
45284 VBA
New 출력물 PDF로 저장방법(사본 때문에 질의드립니다)
참치원양어선 | 2022.12.06 | 추천 0 | 조회 29
참치원양어선 2022.12.06 - 29
45283 함수/공식
New "2022/01/01 오전 08:12:20" 시간만 추출 하고 싶습니다. 엑셀파일첨부파일 (1)
유란뽕 | 2022.12.06 | 추천 0 | 조회 31
유란뽕 2022.12.06 - 31
45278 함수/공식
New 다중조건 조건부서식 여쭈어봅니다. 엑셀파일 (1) 답변완료
김태성 | 2022.12.06 | 추천 0 | 조회 28
김태성 2022.12.06 - 28
45277 함수/공식
New 첨부파일에 있는 것처럼 숫자만 추출해서 표시하고 싶은데요. 엑셀파일 (4) 답변완료
프리한하루 | 2022.12.06 | 추천 0 | 조회 36
프리한하루 2022.12.06 - 36
45270 VBA
New vba 특정조건에따라 가동 안되게 가능한가요? (1)
gkawoa**** | 2022.12.06 | 추천 0 | 조회 23
gkawoa**** 2022.12.06 - 23
45269 문서서식
New 셀서식 사용자지정 (2) 답변완료
애기천하 | 2022.12.06 | 추천 0 | 조회 30
애기천하 2022.12.06 - 30
45263 함수/공식
New 텍스트내에 텍스트 변경 엑셀파일 (2)
엑셀공부중 | 2022.12.05 | 추천 0 | 조회 46
엑셀공부중 2022.12.05 - 46
45262 함수/공식
New 행렬변환 질문 엑셀파일첨부파일 (4)
덕화 | 2022.12.05 | 추천 0 | 조회 36
덕화 2022.12.05 - 36
45259 함수/공식
New 중복값 순서대로 랭킹 입력하는 방법 첨부파일 (3)
tndka**** | 2022.12.05 | 추천 0 | 조회 49
tndka**** 2022.12.05 - 49
45258 기능/도구
New 빈칸선택 (2)
버섭서버 | 2022.12.05 | 추천 0 | 조회 39
버섭서버 2022.12.05 - 39
45256 함수/공식
New 다수 열에 특정 값 합계 내는 법이 있을까요? (2)
MAXM | 2022.12.05 | 추천 0 | 조회 50
MAXM 2022.12.05 - 50
45255 함수/공식
New 특정 단어 입력시 다른시트에 해당 행 내용 표기법 (3)
자유 | 2022.12.05 | 추천 0 | 조회 43
자유 2022.12.05 - 43
45251 함수/공식
New 파일명에 맞춘 이미지 삽입 매크로 (1)
jinyoung**** | 2022.12.05 | 추천 0 | 조회 34
jinyoung**** 2022.12.05 - 34
45250 기능/도구
New 여러 파일 인쇄 시 모든 시트 인쇄하는 법 (1)
남솔 | 2022.12.05 | 추천 0 | 조회 35
남솔 2022.12.05 - 35
45247 함수/공식
New 사칙연산 중 0이 들어간 경우는 어떻게 해야 하나요? (8) 답변완료
욕심없는성공v | 2022.12.05 | 추천 0 | 조회 49
욕심없는성공v 2022.12.05 - 49
45244 함수/공식
New 조건에 맞는 갯수 세는 함수 엑셀파일
엑셀초보랍니다 | 2022.12.05 | 추천 0 | 조회 42
엑셀초보랍니다 2022.12.05 - 42
45242 VBA
New 엑셀프레소를 풀다 메크로 에서 막혔습니다, 도움을 부탁 드립니다. 첨부파일 (1) 답변완료
엑셀 초보자 | 2022.12.05 | 추천 0 | 조회 41
엑셀 초보자 2022.12.05 - 41
45237 기능/도구
New 데이터 유효성 검사 도와주세요 엑셀파일
선물 | 2022.12.05 | 추천 0 | 조회 37
선물 2022.12.05 - 37
45236 함수/공식
New INDEX MATCH 함수질문 엑셀파일 (5) 답변완료
뉴비 신입사원 | 2022.12.05 | 추천 0 | 조회 66
뉴비 신입사원 2022.12.05 - 66