[英]Asp.net Json Post request
我需要通過發送Json請求連接到服務器。
服務器的管理員告訴我應該安裝一個https服務器。
我買了一個SSL並將其安裝在服務器上。
他們給我發送了json字符串格式,即如何從服務器中獲取數據。 我嘗試提出示例請求,但每次收到此錯誤:
遠程服務器返回錯誤:(400)錯誤的請求。
我給他們打電話,他們說請求丟失了私鑰或公鑰證書(我向他們發送了證書,他們也將證書安裝在了他們的服務器上),但仍然收到相同的錯誤。
這是我使用的代碼:
誰能告訴我我有什么問題嗎?
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將捕獲所有發帖請求信息並為您整理信息,以便您可以准確查看代碼發送的內容並將其與服務器期望的內容進行比較。 從那里您應該能夠輕松地更清楚地看到400錯誤原因,並相應地修改代碼。
我猜想問題出在JSON字符串或request.ContentType =“ text / json”(也許需要是application / json)的最終輸出中。 無論哪種方式,Fiddler都是一種更快速的發現方法。
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 = "application/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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.