Недопустимый ответ JSON в POST-запросе (VBA))

#json #vba #web-scraping

#json #vba #очистка веб-страниц

Вопрос:

Я продолжаю получать недопустимый JSON из своего кода.

Код выглядит следующим образом. Я не знаю, в чем проблема

 Sub Getcustoms2()
    Dim JSON As Object
    Dim ws As Worksheet, results(), i As Long, s As String
    returnshipvalue = "20L10KX154i0001"
    MyURL = "firstIndex=0amp;recordCountPerPage=10amp;page=1amp;pageIndex=1amp;pageSize=10amp;pageUnit=10amp;cargMtNo=" amp; returnshipvalue
         With CreateObject("MSXML2.XMLHTTP")
             .Open "POST", "https://unipass.customs.go.kr/csp/myc/bsopspptinfo/cscllgstinfo/ImpCargPrgsInfoMtCtr/retrieveImpCargPrgsInfoDtl.do", False
             .setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
             .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
             .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
             .setRequestHeader "Accept-Encoding", "gzip, deflate, br"
             .send MyURL
             Debug.Print .responseText                                     
         End With
    End Sub
 

.responseText выдает мне только недопустимый JSON.

Для справки, исходный URLадрес сайта https://unipass.customs.go.kr/csp/index.do и я пытаюсь наскрести сведения о конкретном номере BL. общий код выглядит следующим образом. (верхняя часть относится к главному номеру BL NFPWP023)

 Sub Getcustoms2()
Dim JSON As Object
Dim ws As Worksheet, results(), i As Long, s As String
Dim shipvalue As String, custom As String, MyURL As String
Dim BL As String, returnshipvalue As String


Dim LastRow As Long

Dim testarray()


LastRow = Worksheets("Master_BL").Cells(rows.Count, "A").End(xlUp).Row
i = 4

For i = 4 To 4

    BL = Cells(i, 1).Value
    ' Debug.Print BL
   
        
    With CreateObject("MSXML2.XMLHTTP")
        .Open "POST", "https://unipass.customs.go.kr/csp/myc/bsopspptinfo/cscllgstinfo/ImpCargPrgsInfoMtCtr/retrieveImpCargPrgsInfoLst.do", False
        .setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
        .setRequestHeader "Accept-Encoding", "gzip, deflate, br"
        .setRequestHeader "Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"
        
        .send "firstIndex=0amp;page=1amp;pageIndex=1amp;pageSize=10amp;pageUnit=10amp;recordCountPerPage=10amp;qryTp=2amp;cargMtNo=amp;mblNo=" amp; BL amp; "amp;hblNo=amp;blYy=2020"

        
        'Debug.Print .responseText
        Set JSON = JsonConverter.ParseJson(.responseText)
        
    End With
 
 
    If JSON("count") = "0" Then
        returnshipvalue = "empty"
    
    Else
        returnshipvalue = JSON("resultList")(1)("cargMtNo")
        'Debug.Print returnshipvalue
    
        MyURL = "firstIndex=0amp;recordCountPerPage=10amp;page=1amp;pageIndex=1amp;pageSize=10amp;pageUnit=10amp;cargMtNo=" amp; returnshipvalue
          'Debug.Print MyURL
        With CreateObject("MSXML2.XMLHTTP")
             .Open "POST", "https://unipass.customs.go.kr/csp/myc/bsopspptinfo/cscllgstinfo/ImpCargPrgsInfoMtCtr/retrieveImpCargPrgsInfoDtl.do", False
             .setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
             .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
             .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
             .setRequestHeader "Accept-Encoding", "gzip, deflate, br"
            ' .setRequestHeader "Cookie", "MYC_RCNT_MENU=
 	
  • 수입화물 진행정보
  • ; WMONID=DMzwDfgcRNX; MagicLineSession=PhY21XbKet7wH3C0oRfw; JSESSIONID=0069nXlwjdxrmEna0gft9oKhXcSd3_nxlpAQb-Bq7M7s9HGGOIMrE9PNE6B-vT5pv7PfKf7wKR3NhO4rcFzR_EtJG4dYsYiEuStnmqX5ZvBi1HUkhDrR6noY4ki76jba6Vh-:csp31"
    ' .setRequestHeader "Referer", "https://unipass.customs.go.kr/csp/index.do" ' .setRequestHeader "Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7" .send MyURL Debug.Print .responseText Set JSON = JsonConverter.ParseJson(.responseText) End With Debug.Print JSON("impStateRsltVo")("prgsStts") Cells(i, 2).Value = JSON("impStateRsltVo")("prgsStts") Cells(i, 3).Value = JSON("resultListL")(1)("cargTrcnRelaBsopTpcd") Cells(i, 4).Value = JSON("resultListL")(1)("prcsDttm") Cells(i, 5).Value = JSON("resultListL")(2)("cargTrcnRelaBsopTpcd") Cells(i, 6).Value = JSON("resultListL")(2)("prcsDttm") Set JSON = Nothing End If Next i End Sub

    Заранее большое вам спасибо.
    Я пробовал все разные типы заголовков запросов, но это не работает.

    Комментарии:

    1. Первая часть вашего кода выдает содержащийся resultListL в нем ответ json, поэтому я не вижу, в чем на самом деле проблема.

    2. Проблема во второй части. Он не выдает ответ json