Как отправить запрос на сервер в виде json
Всех приветствую не давно начал изучать js и хочу сделать авторизацию по api, запрос отправляю через ajax (Jquery) но на сервере вижу log=admin&pass=passs вместо ожидаемого
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 секунд, если ответ не получен).
В этом разделе
- Примечания по использованию
- Параметры
Отправка данных 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 с формой ввода данных.
Запустим приложение и обратимся к корню веб-сайта. Введем какие-нибудь данные и после отправки в консоли браузера отобразится ответ сервера: