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. Пробуем все тоже самое, но без переносов строк


Что-нибудь должно прокатить.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Добавить ответ в эту тему
Быстрый ответ
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как закрыть в Robots дубли страниц
4 RDmerfo 348 Сегодня, 1:09
автор: Sochicken
Горячая тема (нет новых ответов) Как вернуться к жене от любовницы
106 Fubuki 9302 Вчера, 19:30
автор: WGN
Горячая тема (нет новых ответов) Как избавиться от хандры
Части I-III
72 MihalychAIP 2899 Вчера, 19:29
автор: WGN
Открытая тема (нет новых ответов) Блокировка, замедление трафика и штрафы: Госдума готовит «ответку» для YouTube
8 VinogradOFF 696 Вчера, 19:27
автор: WGN
Открытая тема (нет новых ответов) Instagram - ТОП 3 сервиса для раскрутки магазина, бизнеса, блога, личного аккаунта
Раскрутить Инстаграм магазин, бизнес, блог, личный аккаунт
3 Tanluck 203 Вчера, 19:25
автор: WGN


 



RSS Текстовая версия Сейчас: 28.11.2020, 10:09
Дизайн