Не удается выполнить вызов API BigCommerce в VB.NET

Я получил

"базовая связь была закрыта"

при запуске кода ниже. Я использую vb.net 2012 (я должен использовать эту версию) с библиотекой RestSharp и пытаюсь получить данные о продукте из магазина bigcommerce.com. Это простая консольная программа vb.net 2012, на которой я смогу работать. Я попытался несколько изменить код, даже делая некоторые вещи избыточными, такие как метод и URL, но я не могу заставить его работать.

Dim client As New RestClient
client.BaseUrl = New Uri("https://api.bigcommerce.com/stores/mystorehash/v3/catalog/products")

Dim request As New RestRequest("https://api.bigcommerce.com/stores/mystorehash/v3/catalog/products", Method.GET)
request.AddHeader("Accept", "application/json")
request.AddHeader("Content-Type", "application/json")
request.AddHeader("X-Auth-Client", "notactualvaluenotactualvalue")
request.AddHeader("X-Auth-Token", "notactualvaluenotactualvalue")
request.Method = Method.GET

Dim response As New RestResponse
response = client.ExecuteAsGet(request, Method.GET)

Console.WriteLine("response.Content=" & response.Content)
Console.WriteLine("response.ErrorMessage=" & response.ErrorMessage)
Console.WriteLine("response.ResponseStatus=" & response.ResponseStatus)
Console.WriteLine("response.IsSuccessful=" & response.IsSuccessful)
Console.WriteLine("response.Headers.Count=" & response.Headers.Count)

Выход:

Буду признателен за любую помощь, надеюсь, я делаю что-то глупое, что можно легко исправить

1 ответ

Для любого другого, кто найдет это, полная реализация предложения Натана Букера приведена ниже. При попытке доступа к API Big Commerce в приложении VB.NET необходимо указать TLS 1.2. Если вы этого не сделаете, вы получите статус HTTP 502 - System.IO.IOException Authentication failed because the remote party has closed the transport stream. Решение сделано как:

ServicePointManager.Expect100Continue = True
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
ServicePointManager.DefaultConnectionLimit = 9999
Dim request As HttpWebRequest = CType(WebRequest.Create("https://api.bigcommerce.com/stores/<Redacted>/v3/catalog/products"), HttpWebRequest)
request.AllowAutoRedirect = True
request.ContentType = "application/json"
request.Accept = "application/json"
request.Method = "GET"
request.Headers.Add("X-Auth-Client", "<Redacted>")
request.Headers.Add("X-Auth-Token", "<Redacted>")
Dim response As WebResponse = request.GetResponse()
Diagnostics.Debug.WriteLine((CType(response, HttpWebResponse)).StatusDescription)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As StreamReader = New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
Diagnostics.Debug.WriteLine(responseFromServer)
reader.Close()
response.Close()

Это может быть связано с вашей версией HTTP или (более вероятно) протоколом SSL/TLS.

Если возможно, убедитесь, что вы используете HTTP 1.1 и TLS 1.2.

Другие вопросы по тегам