[英]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.