|   |   | 
| 
 | 1с 8 post запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        Gera1t 27.12.23✎ 13:27 | 
        Здравствуйте!
 Помогите пожалуйста с post запросом Нужно отправить post запрос Вот мой код: HTTPСоединение = Новый HTTPСоединение(АдресСайта, , , , , , , ); ЗапросHTTP = Новый HTTPЗапрос(АдресAPI); ЗапросHTTP.Заголовки.Вставить("Content-type", "application/json; charset=utf-8"); ЗапросHTTP.УстановитьТелоИзСтроки("action=oneSActions" + "&data=" + ФайлJSON, КодировкаТекста.UTF8); HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(ЗапросHTTP); переменные например: АдресСайта = example.com АдресAPI = api/post Код который работает: function initScripts(){ document.querySelector(".click-on-me").addEventListener("click", (e) => { let f_data = new FormData(); srv_url = "http://example.com/api/post"; let json_data = { action: "getAllContragents", secret: "08e09ac9dbc8e7a6205d1c0c82fdff1e", } f_data.append("action", "oneSActions"); f_data.append("data", JSON.stringify(json_data)); try { const response = fetch(srv_url, { method: 'POST', // или 'PUT' body: f_data, // данные могут быть 'строкой' или {объектом}! }); response .then(res => { return res.json(); }) .then((res) => { console.log(res); }) } catch (error) { console.error('Ошибка:', error); } }) } Дело в том, что в ответ на мой запрос приходит ответ 500 Ответ на нижний код приходит корректный ответ Подскажите пожалуйста что с моим кодом не так? | |||
| 1
    
        Donkey_hot 27.12.23✎ 13:46 | 
        (0) АдресAPI = /api/post     | |||
| 2
    
        Donkey_hot 27.12.23✎ 13:49 | 
        (1) Ну и формирование тела запроса кривое какое-то.     | |||
| 3
    
        Gera1t 27.12.23✎ 13:51 | 
        (1)Все равно ответ 500     | |||
| 4
    
        Gera1t 27.12.23✎ 13:52 | 
        Меня смущает то, что я добавляю переменны стройкой, а там через FormData()     | |||
| 5
    
        Donkey_hot 27.12.23✎ 13:52 | 
        А ответ 500 возвращает какое-нибудь пояснение?     | |||
| 6
    
        Gera1t 27.12.23✎ 13:53 | 
        нет, просто 500 и все     | |||
| 7
    
        Donkey_hot 27.12.23✎ 13:55 | 
        (6) Попробуйте отправить просто {
 action: "getAllContragents", secret: "08e09ac9dbc8e7a6205d1c0c82fdff1e", } Возможно, ошибка станет более информативной. | |||
| 8
    
        Gera1t 27.12.23✎ 13:57 | 
        (7) То же самое
 let f_data = new FormData(); f_data.append("action", "oneSActions"); f_data.append("data", JSON.stringify(json_data)); вот тут как я понял формируется тело запроса, программист js мне говорят, что от 1с запрос приходят якобы не как post а как get | |||
| 9
    
        Gera1t 27.12.23✎ 13:58 | 
        может быть как то по другому отправить запрос или по другому тело запроса передать     | |||
| 10
    
        Gera1t 27.12.23✎ 13:59 | 
        Пробовал через postman, указал метод post, тоже ошибка, написал программистам js они говорят, что postman запросы post конвертирует в GET и поэтому не работает.     | |||
| 11
    
        Donkey_hot 27.12.23✎ 14:00 | 
        (8) Отправить для обработки - это POST всегда. Попробуйте передать пустую структуру: {}.
 Как проверяете, что ответ пустой? ПолучитьТелоКакСтроку()? | |||
| 12
    
        Donkey_hot 27.12.23✎ 14:01 | 
        (10) За Postman не скажу, но в SoapUI какой метод указал, такой и выполняется.     | |||
| 13
    
        Gera1t 27.12.23✎ 14:02 | 
        (8)
 HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(ЗапросHTTP); HTTPОтвет.КодСостояния = 500 | |||
| 14
    
        Gera1t 27.12.23✎ 14:03 | 
        (8) Как я понял со стороны сайте, если что то не нравиться ответ всегда 500     | |||
| 15
    
        Gera1t 27.12.23✎ 14:03 | 
        (12) Попробую его скачать     | |||
| 16
    
        Donkey_hot 27.12.23✎ 14:04 | 
        (14) Это отлично, но зачастую (не всегда) можно получить чуть больше подробностей при помощи HTTPОтвет.ПолучитьТелоКакСтроку()     | |||
| 17
    
        Gera1t 27.12.23✎ 14:06 | 
        (16) пустая строка     | |||
| 18
    
        Donkey_hot 27.12.23✎ 14:07 | 
        (17) Это прискорбно.     | |||
| 19
    
        Gera1t 27.12.23✎ 14:08 | 
        Пробовал ПолучитьТелоКакПоток() тоже пусто     | |||
| 20
    
        Gera1t 27.12.23✎ 14:11 | 
        SoapUI тоже 500 выдает     | |||
| 21
    
        Gera1t 27.12.23✎ 14:11 | 
        HTTP/1.1 500 Internal Server Error
 Server: nginx/1.14.1 Date: Wed, 27 Dec 2023 11:11:00 GMT Content-Type: application/json; charset=utf-8 Content-Length: 0 Connection: keep-alive X-Powered-By: PHP/7.4.30 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Set-Cookie: PHPSESSID=55tabgekt8phoqr8c2a9npljuf; path=/ | |||
| 22
    
        Donkey_hot 27.12.23✎ 14:13 | 
        (21) Покажите скриншот тела в SoapUI (конфиденциальное можно замазать)     | |||
| 23
    
        Gera1t 27.12.23✎ 14:16 | ||||
| 24
    
        Donkey_hot 27.12.23✎ 14:19 | 
        (23) Нет, ну так не пойдет... У вас тело запроса пустое. Это нижнее левое окно. Перенесите туда JSON. Параметр data, соответственно, удалить.     | |||
| 25
    
        Gera1t 27.12.23✎ 16:21 | 
        https://ibb.co/TBBjyQK 
 Вот так? | |||
| 26
    
        Gera1t 27.12.23✎ 16:28 | ||||
| 27
    
        Donkey_hot 27.12.23✎ 16:30 | 
        (25) Полагаю в теле все-таки ожидается валидный JSON. Проще всего конечно взять документацию к сервису и почитать. Но если нужны варианты:
 а) { action: "getAllContragents", secret: "08e09ac9dbc8e7a6205d1c0c82fdff1e", } б) {data: { action: "getAllContragents", secret: "08e09ac9dbc8e7a6205d1c0c82fdff1e", } } в) {action: "oneSActions", data: { action: "getAllContragents", secret: "08e09ac9dbc8e7a6205d1c0c82fdff1e", } } В случаях а) и б) избавьтесь только от параметра data (как на скриншоте), в случае в) - от обоих параметров. Если на какой-то из этих вариантов придет что-то отличное от 500, дальше будет проще. | |||
| 28
    
        Donkey_hot 27.12.23✎ 16:31 | 
        (26) multipart/form-data зря выставили, не думаю, что в этом направлении наше счастье.     | |||
| 29
    
        Gera1t 27.12.23✎ 16:37 | 
        Получилось.
 ЗапросHTTP.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded"); вот такой заголовок нужно | |||
| 30
    
        Gera1t 27.12.23✎ 16:38 | 
        action=oneSActions&data=
 { "action": "getAllContragents", "secret": "08e09ac9dbc8e7a6205d1c0c82fdff1e" } вот такое тало запроса | |||
| 31
    
        Gera1t 27.12.23✎ 16:39 | 
        Большое спасибо за помощь!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |