【问题标题】:Outlook VBA Passing form variables to XMLHTTPOutlook VBA 将表单变量传递给 XMLHTTP
【发布时间】:2015-08-02 11:30:56
【问题描述】:

我正在尝试将文本框值从 Outlook 用户窗体传递到 asmx Web 服务。我已经用 PHP 成功地做到了这一点,但现在需要用 VBA 来做到这一点。目前,表单在提交时完全没有任何作用。我相信我传递给 send 方法的内容或方式有问题。有什么建议我可以让它工作吗?

CliAcctNo = TicketCreateForm1.CliAcctNo.Value
ContactName = TicketCreateForm1.ContactName.Value
ContactNum = TicketCreateForm1.ContactNum.Value
Ext = TicketCreateForm1.Ext.Value
Email = TicketCreateForm1.Email.Value
TicketTitle = TicketCreateForm1.TicketTitle.Value
TicketDesc = TicketCreateForm1.Desc.Value

'DataToPost = ("cliacctno=44121&pname=John&pnum=404-223-9655&ext=0&emailaddress=john@noemail.com&tickettitle=test from vab&ticketdetails=test line item vba")
'objEvn.Parameters.Create "Test", "Test"
DataToPost = ("CliAcctNo&ContactName&ContactNum&Ext&Email&TicketTitle&TicketDesc")




Set objHttp = New MSXML2.XMLHTTP
'Set objHttp = New MSXML2.XMLHTTPRequest
objHttp.Open "POST", "http://localhost/test/test.asmx"
objHttp.setRequestHeader "Content-Type", "text/xml"
'objHttp.setRequestHeader "SOAPAction", "CreateTicket"
objHttp.setRequestHeader "SOAPAction", "tempri.org/CreateTicket"
objHttp.Send (DataToPost)

【问题讨论】:

  • DataToPost 始终是相同的固定字符串:您的意思是将从表单中获得的变量连接到该字符串中吗?
  • 不,我绝对不想这样做。每个变量代表一个需要发送到 Web 服务的参数。我该如何做到这一点?

标签: vba outlook xmlhttprequest


【解决方案1】:

在您发布的代码中,您正在向 Web 服务发送一个固定字符串:您需要以某种方式在其中包含您的参数 -

CliAcctNo = TicketCreateForm1.CliAcctNo.Value
ContactName = TicketCreateForm1.ContactName.Value
ContactNum = TicketCreateForm1.ContactNum.Value
Ext = TicketCreateForm1.Ext.Value
Email = TicketCreateForm1.Email.Value
TicketTitle = TicketCreateForm1.TicketTitle.Value
TicketDesc = TicketCreateForm1.Desc.Value

'DataToPost = ("cliacctno=44121&pname=John&pnum=404-223-9655&ext=0&emailaddress=john@noemail.com&tickettitle=test from vab&ticketdetails=test line item vba")


 DataToPost = "cliacctno=" & CliAcctNo & _
             "pname=" & ContactName & _
             "pnum=" & ContactNum & _
             "ext=" & Ext & _
             "emailaddress=" & Email & _
             "tickettitle=" & TicketTitle & _
             "ticketdetails=" & TicketDesc 

【讨论】:

  • 如何在与我调用的 URL 相同的字符串中传递这些变量?目前我有这个,我可以在 Fiddler 中看到它正在返回我分配给变量的 hte 值,但我无法弄清楚除了第一个之外添加更多内容的语法。 codeDataToPost = "localhost/SV2MVC/SV2MVC.asmx/CreateTicket?clientID=" + FclientIDcode
  • 您正在使用 POST,因此数据不应该在查询字符串中传递 - 它进入请求正文。
  • 谢谢。通过恢复到我原来的方法和您在上面发布的回复,我今天能够完成这项工作。当这最初不起作用时,我开始采用不同的路径,包括尝试发送查询字符串,我现在知道除了 GET 之外你无法做到这一点。感谢您对此的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2018-11-07
  • 1970-01-01
  • 2013-01-25
  • 2021-06-28
相关资源
最近更新 更多