我需要通过发送 Json 请求连接到服务器。
服务器的管理员告诉我应该安装 https 服务器。
我买了一个 ssl 并安装在我的服务器上。
他们向我发送了 json 字符串格式,即如何从他们的服务器获取数据。 我尝试提出示例请求,但每次收到此错误时:
The remote server returned an error: (400) Bad Request.
我调用他们,他们说请求缺少私钥或公钥证书(我向他们发送了证书,他们也将其安装在他们的服务器上)但仍然出现相同的错误。
这是我使用的代码:
谁能告诉我,如果我有什么不对的地方吗?
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
POST("https://gw.bisan.com/api/apdemo_6", "{""user"":""MyUser"",""password"":""MyPASS"",""command"":""table"",""table"":""currency"",""fields"":[""symbol"",""rate""]}")
' Read()
End Sub
Private Sub POST(url As String, jsonContent As String)
Try
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.ContentType = "text/json"
request.Method = "POST"
Dim streamWriter As StreamWriter = New StreamWriter(request.GetRequestStream())
streamWriter.Write(jsonContent)
streamWriter.Flush()
streamWriter.Close()
Dim httpResponse As HttpWebResponse = request.GetResponse()
Dim streamReader As StreamReader = New StreamReader(httpResponse.GetResponseStream())
Dim result = streamReader.ReadToEnd()
Label1.Text = result.ToString
Catch ex As WebException
Label1.Text = ex.Message
End Try
End Sub
最佳答案
在您的开发机器上安装 Fiddler http://www.telerik.com/fiddler ,启动它并从您的机器发出发布请求。 Fiddler 将捕获所有的 post 请求信息并为您组织它,这样您就可以准确地查看您的代码发送的内容并将其与服务器期望的内容进行比较。从那里您应该能够更清楚地轻松看到 400 错误的原因并相应地修改您的代码。
我猜测问题出在JSON字符串的最终输出或request.ContentType = "text/json"(可能需要是application/json)。无论哪种方式,Fiddler 都是一种更快的查找方式。
关于Asp.net Json Post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28349547/