Вызов API REST из Visual Basic - PullRequest
0 голосов
/ 16 мая 2019

Я получаю ошибку 404.Это работает нормально, если я вызываю REST API из SoapUI.

Я использую Visual Basic VS2015.У меня есть пример функции, которую я вызываю из простого проекта форм.Это просто для того, чтобы заставить REST API работать.Вызов API REST войдет в службу Windows Visual Basic, как только я ее заработаю,

Существует форма с именем 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) BadЗапрос.

Ошибка -Статус состояния: 400

Ошибка -Статус Описание

Ошибка -Сервер

Что должно быть возвращено в одну строкуJSON, похоже на это:

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

Он прекрасно работает при вызове из SoapUI.

Я считаю, что эта проблема заключается в том, как добавить данные в тело?

1 Ответ

0 голосов
/ 18 мая 2019

Я понял это.Я не могу поверить, что никто не ответил.

Public Sub Try01 (URL) Try Dim myReq As HttpWebRequest Dim myResp As HttpWebResponse Dim myReader As StreamReader myReq = HttpWebRequest.Create (URL) myReq.Method = "POST"ContentType = "application / json" myReq.Accept = "application / 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 = New System.IO.StreamReader (myResp.GetResponseStream) TextBox1.Text = myReader.ReadToEnd Catch ex As Exception TextBox1.Text.TextTextTextОшибка: "& ex.Message End Try Try End Sub

...