2017-07-25 70 views
0

現在我有一個可用的POC API,它返回基於產品ID的產品。我可以使用Swagger成功測試API。我的VB6的代碼如下:用於在HTTP POST中傳遞參數的語法請求

Public Function WebRequestPost(sUrl As String) As String 
    Dim xmlhttp As MSXML2.xmlhttp 

    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") 
    xmlhttp.open "POST", sUrl, False 
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
    xmlhttp.send "{""id"":2}" 
    WebRequestPost = xmlhttp.responseText 

    Set xmlhttp = Nothing 

End Function 

Private Sub Command2_Click() 
    Dim result As String 
    Dim url As String 
    Dim productId As String 

    url = "http://localhost:1112/api/Products" 
    result = WebRequestPost(url) 

    MsgBox result 

End Sub 

我已經使用了類似的代碼與GET方法並傳遞參數通過與成功的網址,但我似乎無法得到POST方法的工作。我有一種感覺,它存在於xmlhttp.send方法中。

+0

問題不是'send'但你要發送的內容。 – Bob77

回答

1

它的工作通過格式化:

xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

xmlhttp.setRequestHeader "Content-Type", "application/json"

並通過有效載荷的形式:xmlhttp.send 2

被做成傳遞到一個變量參數形式爲xmlhttp.send sId

與最終結束了:

Public Function WebRequestPost(sUrl As String, sId As Integer) As String 
    Dim xmlhttp As MSXML2.xmlhttp 

    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") 
    xmlhttp.open "POST", sUrl, False 
    xmlhttp.setRequestHeader "Content-Type", "application/json" 
    xmlhttp.send sId 
    WebRequestPost = xmlhttp.responseText 

    Set xmlhttp = Nothing 

End Function 

Private Sub Command2_Click() 
    Dim result As String 
    Dim url As String 
    Dim productId As String 

    url = "http://localhost:1112/api/products" 
    result = WebRequestPost(url, 3) 

    MsgBox result 

End Sub