Member 13039327 Ответов: 1

Как заставить работать функцию обратных вызовов JSONP


Дорогие все,

В Visual Basic у меня есть код, с помощью которого я могу получить сведения о компании, введя ее номер VATnumber. Теперь результат, который я получаю, находится в 1 большой строке json. Теперь я слышал, что VATlayer также может работать с обратными вызовами JSONP, однако, похоже, я не могу понять, как поместить код так, чтобы я мог получить каждый результат отдельно. Что я могу получить, например, название компании в строке, которую я могу использовать через порграм.

Может ли кто-нибудь помочь мне с этим?

Код, который у меня есть, таков:;
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
       Dim URLString = "http://apilayer.net/api/validate&vat_number=GB864438791"
       Try
           'Create the initial request
           Dim Request As HttpWebRequest = HttpWebRequest.Create(URLString)
           Request.Proxy = Nothing 'Speeds up the request by setting the proxy to nothing
           Request.UserAgent = "Test"

           'Create response and reader
           Dim Response As HttpWebResponse = Request.GetResponse
           Dim ResponseStream As System.IO.Stream = Response.GetResponseStream

           'Create a new streamreader
           Dim StreamReader As New System.IO.StreamReader(ResponseStream)
           Dim Data As String = StreamReader.ReadToEnd

           UrlResponseText.Text = Data
           StreamReader.Close()

       Catch ex As Exception
           MsgBox("Improper Input")
           GoURL.Text = Nothing
       End Try

          End Sub


Результат показан следующим образом;
Result from streamreader;
        '{"valid":true,"database":"ok","format_valid":true,"query":"GB864438791","country_code":"GB","vat_number":"864438791","company_name":"EXERTIS (UK) LTD","company_address":"TECHNOLOGY HOUSE\nMAGNESIUM WAY\nHAPTON\nBURNLEY\n\nBB12 7BF"}


И я хотел бы видеть, что я могу присвоить все результирующее значение разделенным строкам.

Спасибо,
Ганс

П. С.

Этот слой НДС требует ввода ключа в строку. Так что этот URL-адрес не будет работать. Подобный этому. Но с ключом вы получаете ниже показанный результат,

Что я уже пробовал:

Я поискал в интернете и попробовал использовать
New JavaScriptSerializer().Deserialize(Of List(Of Object))(Data)
.

Richard MacCutchan

Вам нужно использовать десериализатор JSON, а не JavaScript. Видеть Десериализатор JSON vb.net - поиск в Google[^].

Richard Deeming

NB: JavaScriptSerializer это старый встроенный сериализатор JSON (de). :)
Класс JavaScriptSerializer (System.Web.Script.Сериализация) | Microsoft Docs[^]

Richard MacCutchan

:большой палец вверх: Больше чтения для меня.

1 Ответов

Рейтинг:
2

RickZeeland

Пример:
http://apilayer.net/api/validate?callback=CALLBACK_FUNCTION[^]

Вы можете найти документацию о обратных вызовах JSONP здесь: Документация | vatlayer API[^]

Вы можете создать класс для ответа JSON здесь: JSON Utils: генерация C#, VB.Net, таблица SQL, Java и PHP из JSON[^]

Public Class Example
        Public Property valid As Boolean
        Public Property database As String
        Public Property format_valid As Boolean
        Public Property query As String
        Public Property country_code As String
        Public Property vat_number As String
        Public Property company_name As String
        Public Property company_address As String
    End Class


Member 13039327

Здравствуйте RickZeeland,

Большое вам спасибо за вашу помощь. Это выглядит очень многообещающе. Однако, поскольку я достиг своего предела в ватлайере, я не могу сейчас пытаться. Но когда я смогу, я позволю тебе предсказать исход.

С уважением,
Ганс