VB向PHP发送POST请求时双参数无法被识别该如何解决
问题原因
你拼接POST参数时没有按照application/x-www-form-urlencoded格式要求,在两个键值对之间添加&分隔符,导致PHP服务端会把整段字符串识别为单个参数,无法单独提取future01和StudentNumber两个字段。
另外建议对参数值做URL编码,避免日期里的空格、斜杠等特殊字符破坏参数解析规则。
修复方案
修改VB代码中参数拼接的部分,代码如下:
Dim dateTime As DateTime = ReturnAsDateTime(thedate, thetime) Dim dateformat2 As String = "M/d/yyyy HH:mm" Dim dateformat3 As String = dateTime.ToString(dateformat2) Dim StudentNOString As String = thestudent.Number.ToString() ' 对参数值做URL编码,无需额外引用程序集,.NET Framework 4.0+ 原生支持 Dim encodedDate As String = WebUtility.UrlEncode(dateformat3) Dim encodedStudentNo As String = WebUtility.UrlEncode(StudentNOString) ' 两个参数之间加&分隔符 Dim upString As String = "future01=" & encodedDate & "&StudentNumber=" & encodedStudentNo System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Dim request As WebRequest = WebRequest.Create("https://example.com/tofilePHPfile.php") request.Method = "POST" Dim byteArray As Byte() = Encoding.UTF8.GetBytes(upString) request.ContentType = "application/x-www-form-urlencoded" request.ContentLength = byteArray.Length Dim dataStream As Stream = request.GetRequestStream() dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() Dim response As WebResponse = request.GetResponse() dataStream = response.GetResponseStream() Dim reader As New StreamReader(dataStream) Dim responseFromServer As String = reader.ReadToEnd() reader.Close() dataStream.Close() response.Close() MsgBox(responseFromServer)
修改完成后即可正常提交两个参数,PHP服务端可以正确识别两个POST字段。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

