programing

Excel vba의 웹에 JSON 게시

megabox 2023. 6. 13. 22:09
반응형

Excel vba의 웹에 JSON 게시

VBA와 함께 JSON을 게시하고 싶습니다.

Dim sURL As String, sHTML As String, sAllPosts As String
Dim oHttp As Object
Dim blWSExists As Boolean
Set oHttp = CreateObject("MSXML2.XMLHTTP")
sURL = "some webste.com"
oHttp.Open "POST", sURL, False
oHttp.setRequestHeader "Content-type", "application/json"
oHttp.setRequestHeader "Accept", "application/json"
oHttp.Send (mType = OPEN_SYSTEM_TRADE & systemOwnerId = 10)
sHTML = oHttp.ResponseText
Worksheets("Open1").Range("A1").Value = sHTML

웹 사이트로 전송할 미리 정의된 형식은 json에서 다음과 같이 설명합니다.{"mType":"OPEN_SYSTEM_TRADE","systemOwnerId":10,"systemId":16, etc}

나의oHttp.Send행이 잘못되었을 것입니다. 인수를 추가하자마자 컴파일러 오류가 발생합니다. 지금까지 웹에서 찾을 수 있는 것 중 가장 좋기 때문에 이 (작동하지 않는) 코드를 게시합니다(다른 모든 것들은 제가 이해하지 못하는 다른 것들에 저를 고정시킵니다...

저는 또한 json 코드를 셀에 넣고, 셀을 문자열에 넣고, 다음과 같이 문자열을 보내려고 했습니다.oHttp.Send(문자열), 이는 결과적으로 발생합니다.Error 406 Not Acceptable웹사이트에서 회신합니다.

JSON은 포맷 방식에 매우 민감할 수 있기 때문에 발송 전에 모든 견적이 제대로 나오는지 확인하고 싶습니다.나는 분할하는 것을 추천합니다.Body전송하기 전에 http://jsonformatter.curiousconcept.com/ 으로 값을 디버깅합니다.

Dim Body As String
Body = "{""mType"":""OPEN_SYSTEM_TRADE"",""systemOwnerId"":10}"

' Set breakpoint here, get the Body value, and check with JSON validator
oHttp.Send Body

Salesforce의 REST API로 작업할 때 비슷한 문제가 많이 발생하여 제 작업을 라이브러리에 통합했습니다. https://github.com/VBA-tools/VBA-Web .이 라이브러리를 사용하면 다음과 같은 예를 볼 수 있습니다.

Dim Body As New Dictionary
Body.Add "mType", "OPEN_SYSTEM_TRADE"
Body.Add "systemOwnerId", 10

Dim Client As New WebClient
Dim Response As WebResponse
Set Response = Client.PostJson("somewebsite.com", Body)

Worksheets("Open1").Range("A1").Value = Response.Content

언급URL : https://stackoverflow.com/questions/21021540/post-json-to-web-in-excel-vba

반응형