我已经用 vb.Net 编写了服务器代码。我希望它读取由另一台服务器的 HTTP“GET”请求发送的变量。例如第一台服务器将发送这个 URL
http://localhost/sms/incoming.php?sender=$originator&receiver=$recipient&msgdata=$messagedata&recvtime=$receivedtime&msgid=$messageid
我的服务器使用的值是 sender, receiver, msgdata, recvtime 和 msgid 我写了我的代码,但它只读取 http 服务器发送的地址,并在服务器的根目录中查找文件。我希望服务器使用 HTTP“GET”请求读取其他服务器发送的变量。我的代码如下所示
' the web server only accepts get requests.
If Mid(LCase(sbuffer), 1, 3) <> "get" Then
'if not GET request then close socket and exit
mySocket.Close()
Return
End If
' Extract path and filename from request
sRequest = sbuffer.Substring(0, iStartPos - 1)
sRequest.Replace("\\", "/")
If ((sRequest.IndexOf(".") < 1) AndAlso (Not sRequest.EndsWith("/"))) Then
sRequest = sRequest & "/"
End If
iStartPos = sRequest.LastIndexOf("/") + 1
' Get the filename
sRequestedFile = sRequest.Substring(iStartPos)
' Get the relative path
sDirName = sRequest.Substring(sRequest.IndexOf("/"), sRequest.LastIndexOf("/") - 3)
' Web server root path
sLocalDir = sMyWebServerRoot
' if no filename specified
' look for default file
If (sRequestedFile.Length = 0) Then
sRequestedFile = _DefaultPage
sPhysicalFilePath = sLocalDir & sDirName & sRequestedFile
' if no default file and no directory requested
' then show welcome page
If Not File.Exists(sPhysicalFilePath) AndAlso (sDirName = "" OrElse sDirName = "/") Then
sErrorMessage = sErrorMessage & "<BR><BR>No root directory found. Set up the root directory in the configuration file.</H2>"
SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found")
SendToBrowser(sErrorMessage)
mySocket.Close()
Return
End If
End If
最佳答案
您可以从 Context.Request.QueryString 对象中获取它们:
mySender = Context.Request.QueryString("sender").ToString
这假定您在服务器上运行的代码在 IIS 下运行。我注意到调用是针对 .PHP 页面的,想知道您实际上是如何获取运行 VB 代码的服务器的 url。
如果这只是将 URL 处理为字符串,那么下面应该为您处理:
Dim tempArray As String()
Dim tempValuePairs As String()
Dim tempPair As String()
Dim tempValue As String
Dim tempString As String
tempArray = sRequest.Split(CChar("?"))
If tempArray.Length <> 2 Then
'url not valid
Return
End If
tempValuePairs = tempArray(1).Split(CChar("&"))
For Each tempString In tempValuePairs
tempPair = tempString.Split(CChar("="))
tempValue = tempPair(1)
'check for pair name, tempvalue will contain data
Select Case tempPair(0).ToLower
Case "sender"
mySender = tempValue
Case "receiver"
Case "msgdata"
Case "recvtime"
Case "msgid"
Case Else
End Select
Next
关于html - 我的服务器程序如何读取在 VB.NET 中使用 HTTP 'GET' 请求方法发送的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890035/