如何使用 vba 将参数传递给 asp.net web api?

Posted

技术标签:

【中文标题】如何使用 vba 将参数传递给 asp.net web api?【英文标题】:How to pass a parameter using vba to an asp.net web api? 【发布时间】:2021-09-25 12:35:24 【问题描述】:

我正在尝试使用 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

这是我的简单网络 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");

【问题讨论】:

看看这是否适合你gist.github.com/six519/5ed917850f402b94ee6b 我在那个链接上看不到任何 vba 代码 你怎么看不到任何vb代码?你能在这里检查一次吗gist.githubusercontent.com/six519/5ed917850f402b94ee6b/raw/… 这能回答你的问题吗? Pass Parameters in VBA HTTP Post Request 那是 vb.net 不是 vba。 【参考方案1】:
http.Open "POST", "http://10.5.72.172:108/api/vbaemail", True

改为 True 设置为 False

【讨论】:

(为了其他读者方便,True表示异步,False表示同步) 同样的事情,传递给web api的参数是空白的,我在发送命令期间也得到“操作中止”。【参考方案2】:

我能够通过用单引号括住字符串来使其工作。问题是我不能在传递给 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

【讨论】:

以上是关于如何使用 vba 将参数传递给 asp.net web api?的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个参数传递给 ASP.NET Core 中的 get 方法

我应该如何将多个参数传递给 ASP.Net Web API GET?

ASP.Net MVC:使用 RedirectToAction() 将字符串参数传递给操作

如何将多个参数传递给 ASP.NET CORE MVC 中的 HttpGet 方法?

如何将参数传递给 jQuery document.ready() 函数(ASP.NET MVC、C#)

如何将参数传递给 ASP.NET MVC 中的局部视图?