X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как рассчитать Content-Length для заголовка запроса POST?
toorr2p
toorr2p
Topic Starter сообщение 15.6.2020, 23:31; Ответить: toorr2p
Сообщение #1


Всем привет! 

 

Не получается рассчитать Content-Length для запроса, это обязательный параметр для все[ запросов к API "Склад-Облако" OptiCore.

 

Если он не указан то сервер рвет соединение по таймауту и все...

 

Вот так выглядит запрос в POSTMAN

 




 

 

В постмане работает только потому что там у заголовка этого по умолчанию автоматом рассчитывается Content-Length (обвел красным)

 

Но как мне это выполнить на PHP!? Как рассчитать размер этого BODY?

 

Пробовал strlen не прокатывает...

 

Вот сам метод формирующий запрос и метод с CURL отправляющий запрос

 



    /**
     * Запрос типов доставки (доставочных компаний) DeliveryTypes_GetList
     * @param $login
     * @param $pass
     * @return array
     */
    public function DeliveryTypes_GetList($login, $pass){
        $content = '<?xml version="1.0" encoding="utf-8"?>
            <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
        $content .= '<soap:Body>';
        $content .= '<DeliveryTypes_GetList xmlns="http://cowms.ru/service">';
        $content .= '<User>'.$login.'</User>';
        $content .= '<Pass>'.$pass.'</Pass>';
        $content .= '</DeliveryTypes_GetList>';
        $content .= '</soap:Body>';
        $content .= '</soap:Envelope>';
        $host = ITSERW_CLOUDSTORE_OPTICORE_API_URI.'/SERVICE.asmx?op=Warehouse_GetList';
        $header = array(
            'Host: localhost',
            'Content-Type: text/xml; charset=utf-8',
            //'Content-Length: 0',
            'SOAPAction: http://cowms.ru/service/DeliveryTypes_GetList'
        );
        $response = self::curl_get($host, $header, 'POST');
        return $response;
    }




    /**
     * CURL
     * @param $response
     * @return array
     */
    function curl_get($host, $header, $method='GET', $fields = array()){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $host);
        if(count($header)) { //is HTTP headers
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        if($method=='POST') { //is POST
            curl_setopt($ch, CURLOPT_POST, 1);
            if(count($fields)){
                curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
            }
        }
        curl_setopt($ch, CURLOPT_HEADER,true);
        curl_setopt($ch, CURLINFO_HEADER_OUT,true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $response = curl_exec($ch);
        if($curl_err = curl_error($ch)) {
            \Bitrix\Main\Diag\Debug::writeToFile($curl_err);
        }
        //\Bitrix\Main\Diag\Debug::writeToFile('curl_getinfo');
        //\Bitrix\Main\Diag\Debug::writeToFile(curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }


Перерыл весь гугл и яндекс, нет  конкретного ответа как это сделать!



Сообщение отредактировал Вячеслав - 15.6.2020, 23:34
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 18.9.2020, 18:33; Ответить: fedornabilkin
Сообщение #2


Скорее всего уже не актуально. Но я бы попробовал так:

  1. Смотрим длину в постмане

  2. Считаем strlen и сравниваем

  3. Считаем mb_strlen и сравниваем

  4. Пробуем все тоже самое, но без переносов строк


Что-нибудь должно прокатить.


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4066 Вчера, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
11 Boymaster 1798 17.4.2024, 23:35
автор: Boymaster
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 673 17.4.2024, 11:50
автор: Rebex
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
29 freeax 4806 17.4.2024, 1:19
автор: sergio11
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2811 16.4.2024, 12:48
автор: diviner99


 



RSS Текстовая версия Сейчас: 19.4.2024, 7:22
Дизайн