Проблема добавления JSON содержимого в POST-запрос WinHttpRequest в classi c ASP - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь получить данные с помощью API NHS, и инструкции приведены ниже ...

Endpoint        https://api.nhs.uk/service-search/search?api-version=1
Method      POST
Headers     Content-Type: application/json
subscription-key: MYKEYHERE
Body        {
    "filter": "OrganisationTypeID eq 'PHA'",
    "orderby": "OrganisationName",
    "top": 25,
    "skip": 0,
    "count": true
}

После ответа здесь Как я могу публиковать данные с использованием cURL в asp classi c? Я пробовал это ...

<%
Dim http: Set http = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
StrFilter = "OrganisationTypeID eq 'PHA'"
StrFilter = Server.UrlEncode(StrFilter)
Dim url: url = "https://api.nhs.uk/service-search/search?api-version=1"
Dim data: data = "filter=" & StrFilter & "&orderby=OrganisationName&top=25&skip=0&count=true"
With http
  Call .Open("POST", url, False)
  Call .SetRequestHeader("subscription-key", "MYKEYHERE")
  Call .SetRequestHeader("Content-Type", "application/json")
  Call .Send(data)
End With
If Left(http.Status, 1) = 2 Then
  'Request succeeded with a HTTP 2xx response, do something...
  Response.Write http.responseText
Else
  'Output error
  Call Response.Write("Server returned: " & http.Status & " " & http.StatusText)
End If
%>

... но это дает мне сообщение "Сервер вернул: 400 неверных запросов". Это почти наверняка тот случай, когда я не знаю, как сделать это правильно. Куда я иду не так? Спасибо

1 Ответ

1 голос
/ 06 апреля 2020

Проблема в том, что API ожидает тело application/json, поэтому вам нужно передать его вместо application/x-www-form-urlencoded данных.

Вы можете построить JSON как строку но он должен соответствовать JSON структуре, иначе вы, скорее всего, снова получите HTTP 400 Bad Request.

Замените data на;

Dim data: data = "{ ""filter"": ""OrganisationTypeID eq 'PHA'"", ""orderby"": ""OrganisationName"", ""top"": 25, ""skip"": 0, ""count"": true }"

Вы также можете используйте некоторые существующие библиотеки , чтобы собрать и проанализировать JSON для вас.

Лично я бы порекомендовал - JSON объектный класс от RCDMK

...