簡體   English   中英

如何使用 vba 將參數傳遞給 asp.net web api?

[英]How to pass a parameter using vba to an asp.net web api?

我正在嘗試使用 vba 發布到 web api。 問題是web api中的參數為空。 web api是用asp編寫的。 我從 c# 調用了 api,它可以工作,但我無法從 vba 中獲得它。

這是對 api 的 vba 調用:

Sub Test()

    Dim http As New MSXML2.XMLHTTP60
   
    http.Open "POST", "http://10.5.72.172:108/api/vbaemail", True

    http.SetRequestHeader "Content-type", "application/json"
    
    Call http.send("abc")
   
End Sub

這是我的簡單 web api。

public void Post([FromBody] string strJson)
{
    SqlConnection cnnCom = null;
    SqlCommand cmdCom = null;
    string strSql = null;

    //write parameter to table
    cnnCom = new SqlConnection(CF.Get_Connection_String(CF.DatabaseName.COMMON));
    cnnCom.Open();
    strSql =
        "INSERT INTO Test( " +
        "F1) " +
        "VALUES( " +
        "'" + strJson + "')";
    cmdCom = new SqlCommand(strSql, cnnCom);
    cmdCom.ExecuteNonQuery();
    cnnCom.Dispose();
}

這是對 web api 的工作 c# 調用:

 static void Main(string[] args)
{
    HttpClient hc = new HttpClient();
    Task<HttpResponseMessage> task1 = null;

    //call web api
    task1 = hc.PostAsJsonAsync<string> 
        ("http://10.5.72.172:108/api/vbaemail", "abc");
}
http.Open "POST", "http://10.5.72.172:108/api/vbaemail", True

而是 True 設置 False

我能夠通過用單引號將字符串括起來來讓它工作。 問題是我不能在傳遞給 web api 的正文中的任何地方使用單引號,盡管可能有一種方法可以將它們轉義。 在我們的例子中,這沒什么大不了的,我們只是想修補一些最終會消失的舊 vba 程序。

Sub Test()

    Dim http As New MSXML2.XMLHTTP60
   
    http.Open "POST", "http://10.5.72.172:108/api/vbaemail", True

    http.SetRequestHeader "Content-type", "application/json"
    
    Call http.send("'" + strJson + "'")  
   
End Sub

暫無
暫無

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

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