与RESTful Web服务通信的Get/Post请求

23

我需要从VB6向一个RESTful Web服务进行GET和POST请求。最好和最简单的方法是什么?


19
我对您不得不在VB6中使用Web服务表示哀悼。 - Ryan Tenney
3
@Ryan,至少这比将几个 PHP 类重写为 VB,然后维护它们要好得多。而且由于我正在制作 Web 服务,所以它将尽可能简单,即不使用 XML、JSON 等。响应将只是一个简短的字符串(一个单词?)或可能是一个数字。 - Echo says Reinstate Monica
LOL我想回到C#(哇啊)LOL - garaber
3个回答

31

你需要添加对MSXML库的引用:

Dim sUrl As String
Dim response As String
Dim xmlhttp

Set sUrl = "http://my.domain.com/service/operation/param"

Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "POST", sURL, False
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send()

Dim response As String = xmlhttp.responseText

Set xmlhttp = Nothing

1
而且,与在Internet Explorer中使用JavaScript中的XMLHTTPRequest类似方便! - Ryan Tenney
1
那段代码根本不是VB6,但我想你应该能从中找到答案。 - Bob77
这对于JSON会有什么改变? - garaber
@garaber - 你不会这样做的。你的responseText将会是JSON而不是XML。 - Justin Niessner
我还需要发送JSON。 - garaber
显示剩余9条评论

15

最近我在一个旧的遗留应用程序中需要使用此功能进行GET请求,由于被接受的答案无法编译,所以我想发布一些可工作的代码。我相信它将帮助未来使用VB6的某些不幸者;) 这是一个漂亮干净的函数。

Public Function WebRequest(url As String) As String
    Dim http As MSXML2.XMLHTTP
    Set http = CreateObject("MSXML2.ServerXMLHTTP")

    http.Open "GET", url, False
    http.Send

    WebRequest = http.responseText
    Set http = Nothing
End Function

这里是使用示例:

Dim result As String
Dim url As String

url = "http://my.domain.com/service/operation/param"
result = WebRequest(url)

愉快的VB6编程!:)


2
哈哈,我完全同意。毕竟在2017年,它是最令人畏惧的语言之一 ;) - craftworkgames

0
如果你需要从REST Web服务进行GET/POST操作,你可以简单地向WebService的URL编写一个HTTP请求:
http://www.webservicehost.com/webserviceop?<any parameters>

如果您需要传递复杂对象,则需要将它们序列化,然后作为参数传递。
然后,您可以以Web服务决定返回的任何格式(JSON、XML等)获取HTTP响应。

1
你的回答没有解决如何在VB6中实现这个问题。 - Ryan Tenney
我认为Echo已经知道了基本的原理,并寻求具体的VB6建议。 - MarkJ
1
是的,我只需要具体的内容。谢天谢地,我现在不再经常接触VB6了,我现在主要使用PHP和一些Python工作。 - Echo says Reinstate Monica
然后Justin Niessner的回答在我看来是最好的,对于误解我感到抱歉。 - Scott Lance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接