Перейти к содержимому

Как отправить json запрос на сервер

  • автор:

Как отправить запрос на сервер в виде json

Всех приветствую не давно начал изучать js и хочу сделать авторизацию по api, запрос отправляю через ajax (Jquery) но на сервере вижу log=admin&pass=passs вместо ожидаемого в гугле толкого ничего нет везде пишут как получить от сервера json и распарсить его. код js:

function push(login,password)< $.ajax(< type: "POST", url: "http://localhost/status", cahce: false, contentType:"application/json; charset=UTF-8; application/x-www-form-urlencoded", dataType: "json", data: , success: function(result) < console.log(result) >>);> function input_v()
     Document    login 

pass

Отслеживать

задан 15 янв 2022 в 17:19

user325153 user325153

39 7 7 бронзовых знаков

Ну Вы уж определитесь contentType у Вас должен быть «application/json;» или «application/x-www-form-urlencoded» , а то указано и то и то.

15 янв 2022 в 17:53

data: JSON.stringify(. ) . Ну либо переходить на axios или fetch. Там json из коробки отправляется

Отправить JSON на внешний веб-сайт

Выходной коннектор Отправить JSON на внешний WebSocket может использоваться для отправки данных события, адаптированных и отформатированных как стандартный JSON, на внешний веб-сайт. ArcGIS GeoEvent Server , как клиент, отправляет JSON на внешний веб-сайт используя запрос HTTP/POST.

Примечания по использованию

При использовании внешнего коннектора Отправить JSON на внешний веб-сайт имейте в виду следующее:

  • Этот выходной коннектор адаптирует данные событий как стандартный JSON, в отличие от объекта JSON или GeoJSON.
  • Этот выходной коннектор связывает исходящий адаптер универсального файла JSON с HTTP Outbound Transport.
  • Запись в универсальном файле JSON не обязательно должна содержать данные, представляющие геометрию. На внешний веб-сайт могут отправляться непространственные данные.
  • Параметры запросов могут задаваться отдельно в свойстве Параметры или как часть параметра URL .
  • Для этого выходного коннектора предполагается, что внешний веб-сервер или веб-сервис принимают запросы HTTP/POST не требуя аутентификации. Если внешние веб-сайты требуют аутентификацию, можно создать собственный выходной коннектор, который использует Generic JSON Outbound Adapter и HTTP Outbound Transport, поддерживающие базовую, сертифицированную или OAuth аутентификацию.

Параметры

Ниже приведены параметры внешнего коннектора Отправить JSON на внешний веб-сайт:

Описательное имя выходного коннектора, используемое для ссылки в GeoEvent Manager .

Базовый URL внешнего веб-сайта, на котором будут опубликованы данные. GeoEvent Server отправляет запрос HTTP/POST на URL-адрес для отправки данных JSON.

Имя параметра заголовка:Список значений

Параметры, включаемые в HTTP-заголовок запроса при опросе внешнего веб-сервера или веб-сервиса. Параметры заголовка должны быть заданы с помощью пар Имя: Значение (включая двоеточие), разделенных запятыми.

  • Да – исходный JSON будет форматироваться (подготавливаться).
  • Нет – исходный JSON не будет форматироваться.

Задает параметр запроса (или несколько параметров запроса) для присоединения к базовому URL. Параметры запроса будут разными для каждого веб-сервиса и поддерживаются не всеми сервисами. Если поддерживаются, параметры запроса помогают указать данные, представляющие особый интерес. У этого параметра нет значения по умолчанию.

Использовать URL-адрес прокси

  • Да – GeoEvent Server будет использовать указанный прокси-сервер при отправке запроса на URL-адрес внешнего сервиса.
  • Нет – GeoEvent Server не будет использовать URL-прокси-сервера. Доступ к базовому URL будет выполняться напрямую.

URL прокси для использования в время запроса HTTP.

Параметр показывается, когда для свойства Использовать URL-адрес прокси задано значение Да , и скрыто, если задано значение Нет .

Тип MIME тела сообщения

Задает тип MIME данных, включенных в тело содержимого HTTP/POST запроса. Типы MIME обычно состоят из структуры типа/подтипа и используются для указания типов интернет-носителей, используемых и принимаемых HTTP-клиентом/сервером. Этот коннектор задает следующий тип MIME для JSON application / json , который является значением по умолчанию для этого параметра.

Ожидание HTTP (в секундах)

Задает максимальное время (в секундах) ожидания выходным коннектором ответа от внешнего веб-сервиса, который отправил запрос HTTP/POST. Указанное значение должно быть задано целым числом от 1 до 2147483. Значение по умолчанию – 30 секунд (HTTP/POST-запрос будет остановлен через 30 секунд, если ответ не получен).

В этом разделе
  1. Примечания по использованию
  2. Параметры

Отправка данных JSON с помощью Python Requests

Часто при разработке веб-приложений приходится столкнуться с задачей отправки (POST) данных в формате JSON с помощью Python. Для этого наиболее удобно воспользоваться библиотекой Requests. Однако, иногда при попытке отправить данные на сервер, разработчик может столкнуться с ошибкой «400 Bad Request».

Рассмотрим типичный пример.

Предположим, что есть код, который формирует некоторый словарь данных, преобразует его в формат JSON, и пытается отправить на сервер.

import requests import json data = data_json = json.dumps(data) payload = r = requests.post("http://localhost:8080", data=payload)

В данном случае, данные отправляются на сервер в формате x-www-form-urlencoded, а не JSON. Это происходит из-за того, что в качестве аргумента data передается словарь. Если сервер ожидает получить данные именно в формате JSON, это может стать причиной ошибки «400 Bad Request».

Существует несколько способов решения этой проблемы. Один из них — использование аргумента json вместо data при вызове метода post:

r = requests.post("http://localhost:8080", json=data)

В этом случае, библиотека Requests автоматически преобразует словарь data в JSON и устанавливает необходимые заголовки.

Если же нужно отправить данные в определенном формате или с нестандартными заголовками, можно воспользоваться аргументом headers:

headers = r = requests.post("http://localhost:8080", data=data_json, headers=headers)

Таким образом, проблема отправки данных JSON с помощью Python Requests может быть успешно решена. Главное, не забывать о том, что сервер может ожидать данные в определенном формате и учитывать это при формировании запроса.

JSON и AJAX¶

JSON представляет один из самых популярных форматов хранения и передачи данных, и Express имеет все возможности для работы с JSON.

Пусть в папке проекта имеется файл index.html со следующим кодом:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
 html> head> title>Регистрацияtitle> meta charset="utf-8" /> head> body> h1>Введите данныеh1> form name="registerForm"> label>Имяlabel>br /> input type="text" name="userName" />br />br /> label>Возрастlabel>br /> input type="number" name="userAge" />br />br /> button type="submit" id="submit"> Отправить button> form> script> document .getElementById('submit') .addEventListener('click', function (e)  e.preventDefault(); // получаем данные формы let registerForm = document.forms['registerForm']; let userName = registerForm.elements['userName'] .value; let userAge = registerForm.elements['userAge'] .value; // сериализуем данные в json let user = JSON.stringify( userName: userName, userAge: userAge, >); let request = new XMLHttpRequest(); // посылаем запрос на адрес "/user" request.open('POST', '/user', true); request.setRequestHeader( 'Content-Type', 'application/json' ); request.addEventListener( 'load', function ()  // получаем и парсим ответ сервера let receivedUser = JSON.parse( request.response ); console.log( receivedUser.userName, '-', receivedUser.userAge ); // смотрим ответ сервера > ); request.send(user); >); script> body> html>html> html> 

Здесь, как и в прошлой теме, определена форма с двумя полями для ввода имени и возраста пользователя. Но теперь с помощью обработчика нажатия перехватывается отправка этой формы. Мы получаем значения ее полей и сериализум в объект json, который затем отправляется на сервер с помощью ajax на адрес /user .

Далее определим в главном файле приложения — в app.js код, который бы принимал отправленные данные:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
const express = require('express'); const app = express(); // создаем парсер для данных в формате json const jsonParser = express.json(); app.post('/user', jsonParser, function (request, response)  console.log(request.body); if (!request.body) return response.sendStatus(400); response.json(request.body); // отправляем пришедший ответ обратно >); app.get('/', function (request, response)  response.sendFile(__dirname + '/index.html'); >); app.listen(3000); 

Прежде всего для получения данных в формате json необходимо создать парсер с помощью функции json :

const jsonParser = express.json(); 

В реальности данный парсер будет использовать модуль bodyParser , который использовался нами ранее для парсинга данных отправленной формы.

И поскольку с клиентом мы взаимодействуем через формат json, то данные клиенту отправляются с помощью метода response.json() :

1 2 3 4 5 6
app.post('/user', jsonParser, function (request, response)  console.log(request.body); if (!request.body) return response.sendStatus(400); response.json(request.body); // отправляем пришедший ответ обратно >); 

Следует отметить, что в принципе мы можем отправить объект и с помощью стандартного метода response.send(request.body) . В реальности метод response.json() устанавливает для заголовка Content-Type значение application/json , серилизует данные в json с помощью функции JSON.stringify() и затем отправляет данные с помощью response.send() .

Для получения данных, как и в случае с формами, используются выражения типа request.body.userName , где request.body инкапсулирует данные формы, а userName — ключ данных.

При обращении к корню веб-приложения пользователю будет отправляться содержимое файла index.html с формой ввода данных.

Запустим приложение и обратимся к корню веб-сайта. Введем какие-нибудь данные и после отправки в консоли браузера отобразится ответ сервера:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *