gpt4 book ai didi

json - VBA 将 json 发布到 API

转载 作者:行者123 更新时间:2023-12-01 00:15:07 25 4
gpt4 key购买 nike

我正在尝试编写 VBA 以将 json 发布到 api 并将结果解析到工作表中。我可以生成 JSON,并且有信心将结果解析为我需要的内容。

我知道有在线工具可以将 json 转换为 vba 并返回,浏览器插件可以发布请求,但我是办公室里唯一可以这样做的人,所以如果我生病或休假,我想自动化它。为此,我需要发送 json 并可能存储响应以便我可以解析它。

我是编码新手,所以发布这样的请求让我头疼。到目前为止,我有以下代码来编写 json。如果能帮助我入门,我将不胜感激。如果需要,我可以发布 json 示例或我想将其发布到的 api。

为糟糕的代码道歉,我知道我可以改进它,但我想获得 json 响应,因为我认为这将是最具挑战性的部分。

EDIT 已经取得了一些进展。现在可以将 JSON 字符串发送到 URL 并获得响应。但是它总是返回失败:

"{ ""message"": ""发生错误。""}”

如果我用 httpRequestor 手动发送 json,结果会正确返回。这似乎表明在代码中的某个地方,JSON 在发布时被混淆或以某种方式被修改。

更新了下面的代码。 (已删除对实际数据的任何引用)

EDIT 2 已修复并正常工作。从

中删除引号

objHTTP.send ("Json")

    Private Sub CommandButton21_Click()

Dim h_1 As String
Dim h_2 As String

h_1 = Range("A1")
h_2 = Range("B1")
h_3 = Range("C1")
h_4 = Range("D1")
h_5 = Range("E1")
h_6 = Range("F1")

sv_1 = 2
sv_2 = 2
sv_3 = 2
sv_4 = 2
sv_5 = 2
sv_6 = 2

For f = 15 To 21
v_1 = Range("A" & sv_1)
v_2 = Range("B" & sv_2)
v_3 = Range("C" & sv_3)
v_4 = Range("D" & sv_4)
v_5 = Range("E" & sv_5)
v_6 = Range("F" & sv_6)
y = "[{""" & h_1 & """:""" & v_1 & """,""" & h_2 & """:""" & v_2 & """,""" & h_3 & """:""" & v_3 & """,""" & h_4 & """:""" & v_4 & """,""" & h_5 & """:""" & v_5 & """,""" & h_6 & """:""" & v_6 & """ }]"

Range("A" & f).Value = y
sv_1 = sv_1 + 1
sv_2 = sv_2 + 1
sv_3 = sv_3 + 1
sv_4 = sv_4 + 1
sv_5 = sv_5 + 1
sv_6 = sv_6 + 1
Next f





Dim objHTTP As Object
Dim Json As String
Json = Range("A15")
Dim result As String
'Set objIE = CreateObject("InternetExplorer.Application") ' Don't think this is needed
'objIE.navigate "about:blank" ' Don't think this is needed
'objIE.Visible = False ' Don't think this is needed
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URl = "http://myApi/iSendJsonTo"
objHTTP.Open "POST", URl, False
'objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/json"
objHTTP.send ("Json")
result = objHTTP.responseText
'objIE.document.Write result ' Don't think this is needed

'Some simple debugging
Range("A25").Value = result
Range("A26").Value = Json


Set objHTTP = Nothing

最佳答案

这是发送 JSON 的代码,经过一些清理。

    Dim objHTTP As Object
Dim Json As String
Json = Range("A15") 'here I am pulling in an existing json string to test it. String is created in other VBA code

Dim result As String

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URl = "http://myApi/iSendJsonto/"
objHTTP.Open "POST", URl, False

objHTTP.setRequestHeader "Content-type", "application/json"
objHTTP.send (Json)
result = objHTTP.responseText

'Some simple debugging
Range("A25").Value = result
Range("A26").Value = Json


Set objHTTP = Nothing

关于json - VBA 将 json 发布到 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com