从Visual Basic调用REST API

时间:2019-05-16 16:51:22

标签: rest api basic

我不断收到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调用时效果很好。

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

1 个答案:

答案 0 :(得分:0)

我知道了。我不敢相信没人能回答。

公共Sub Try01(URL)         尝试             将MyReq设为HttpWebRequest             将MyResp设为HttpWebResponse             将myReader昏暗为StreamReader             myReq = HttpWebRequest.Create(URL)             myReq.Method =“开机自检”             myReq.ContentType =“应用程序/ json”             myReq.Accept =“应用程序/ json”             myReq.Headers.Add(“授权”,“承载者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 =新System.IO.StreamReader(myResp.GetResponseStream)             TextBox1.Text = myReader.ReadToEnd         异常捕获             TextBox1.Text = TextBox1.Text&“错误:”&例如消息         结束尝试     结束