从 Visual Basic 调用 REST API

问题描述 投票:0回答:1

我不断收到 404 错误。 如果我从 SoapUI 调用 REST API,它就可以正常工作。

我使用的是 Visual Basic VS2015。 我有一个示例函数,我从一个简单的表单项目中调用它。这只是为了让 REST API 正常工作。一旦我让它工作,REST API 调用将进入 Visual Basic Windows 服务,

有一个名为

form1
的表单,其中有一个
txtURL
文本框、一个调用
sub Main()
的按钮和一个名为
textbox1
的输出文本框。

Public Shared Sub Main()
        Try
            Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(Form1.txtURL.Text), HttpWebRequest)
            With myHttpWebRequest
                .Method = "POST"
                .ContentType = "application/json"
                .Accept = "application/json"
                .MediaType = "jsonp"
 
                With .Headers
                    .Add("Authorization", "Bearer ABCDabcd1234=")
                    .Add("riskLevelStatus", "6897")
                    .Add("userId", "12345")
                    .Add("applicationName", "MyApp")
                End With
 
            End With
            Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
 
            Form1.TextBox1.Text = Form1.TextBox1.Text & myHttpWebResponse.ToString() & vbCrLf
 
            myHttpWebResponse.Close()
            'Catch exception if trying to add a restricted header.
        Catch e As ArgumentException
            Form1.TextBox1.Text = Form1.TextBox1.Text & "Error-ArgumentException: " & e.Message & vbCrLf
        Catch e As WebException
            Form1.TextBox1.Text = Form1.TextBox1.Text & "Error-WebException: " & e.Message & vbCrLf
            If e.Status = WebExceptionStatus.ProtocolError Then
                Form1.TextBox1.Text = Form1.TextBox1.Text & "Error-Status Code: " & CType(e.Response, HttpWebResponse).StatusCode & vbCrLf
                Form1.TextBox1.Text = Form1.TextBox1.Text & "Error-Status Description: " & CType(e.Response, HttpWebResponse).StatusDescription & vbCrLf
                Form1.TextBox1.Text = Form1.TextBox1.Text & "Error-Server: " & CType(e.Response, HttpWebResponse).Server & vbCrLf
            End If
        Catch e As Exception
            Form1.TextBox1.Text = Form1.TextBox1.Text & "Error-Exception: " & e.Message & vbCrLf
        End Try
    End Sub 'Main

这是输出到

textbox1
的内容:

错误 -WebException:远程服务器返回错误:(400) 错误请求。

错误 - 状态代码:400

错误-状态描述

错误-服务器

应该返回的是单行JSON,类似于这样:

{“quid”: “jhgdsjdshg-hdbw-akjhjk-kdhbfsihg”}

从 SoapUI 调用时工作正常。

我相信这个问题是如何向正文添加数据?

rest api basic
1个回答
10
投票

我想通了。我不敢相信没有人给出答案。

  Public Sub Try01(URL)
        Try
            Dim myReq As HttpWebRequest
            Dim myResp As HttpWebResponse
            Dim myReader As StreamReader
            myReq = HttpWebRequest.Create(URL)
            myReq.Method = "POST"
            myReq.ContentType = "application/json"
            myReq.Accept = "application/json"
            myReq.Headers.Add("Authorization", "Bearer LKJLMLKJLHLMKLJLM839800K=")
            Dim myData As String = "{""riskLevelStatus"":""0001"",""userId"":""10000004030"",""applicationName"":""MyTestRESTAPI""}"
            myReq.GetRequestStream.Write(System.Text.Encoding.UTF8.GetBytes(myData), 0, System.Text.Encoding.UTF8.GetBytes(myData).Count)
            myResp = myReq.GetResponse
            myReader = New System.IO.StreamReader(myResp.GetResponseStream)
            TextBox1.Text = myReader.ReadToEnd
        Catch ex As Exception
            TextBox1.Text = TextBox1.Text & "Error: " & ex.Message
        End Try
    End Sub
© www.soinside.com 2019 - 2024. All rights reserved.