簡體   English   中英

如何在 VBA 中發送帶有正文的 HTTP POST 請求

[英]How to send HTTP POST request with body in VBA

我嘗試使用 vba 發送發布請求,並努力將我的 python 代碼轉換為 vba。 在 python 我可以做到這一點

import requests

headers = {
        "authority": "platform.example.com",
        "accept": "application/json, text/plain, */*",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
        "content-type": "application/json",
        "sec-fetch-site": "same-site",
        "sec-fetch-mode": "cors",
        "sec-fetch-dest": "empty",
        "accept-language": "en-US,en;q=0.9",
    }

data = "{"messages":[{"to":"12345","channel":"sms","content":"Test message"}]}"

r=requests.post("https://example.com/v1/message", headers=headers, data=data)

我在 vba 中試過這個,但沒有運氣。 Msgbox 出現空白

Sub test()

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Url = "https://example.com/v1/message"
objHTTP.Open "POST", Url, False
objHTTP.setRequestHeader "authority", "platform.example.com",
objHTTP.setRequestHeader "accept", "application/json, text/plain, */*"
objHTTP.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
objHTTP.setRequestHeader "content-type", "application/json"
objHTTP.setRequestHeader "sec-fetch-site", "same-site"
objHTTP.setRequestHeader "sec-fetch-mode", "cors"
objHTTP.setRequestHeader "sec-fetch-dest", "empty"
objHTTP.setRequestHeader "accept-language", "en-US,en;q=0.9"

Data = """messages=[{'to':'1234','channel':'sms','content':'Test message'}]"""


objHTTP.send Data
MsgBox objHTTP.ResponseText

End Sub

我怎樣才能讓 vba 工作?

嘗試使用雙引號來復制有效的Data

Data = "{""messages"":[{""to"":""1234"",""channel"":""sms"",""content"":""Test message""}]}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM