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



 

Здравствуйте, гость ( Вход | Регистрация )

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


Бывалый
****

Группа: User
Сообщений: 388
Регистрация: 14.11.2013
Поблагодарили: 0 раз
Репутация:   3  


Всем привет! 

 

Не получается рассчитать 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


Старожил
******

Группа: User
Сообщений: 1192
Регистрация: 19.3.2013
Поблагодарили: 0 раз
Репутация:   206  


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

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

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

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

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


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) 50 идея для видеороликов на Ютуб
cpa-rating.ru - рейтинг партнерских программ
2 airman 93 Сегодня, 21:16
автор: airman
Открытая тема (нет новых ответов) Как обойти блокировку medium.com и reddit.com
7 aplodise 354 Сегодня, 19:39
автор: SmoPromo
Открытая тема (нет новых ответов) Написать универсальный движок для сайтов на PHP
10 BuxarNET 535 Сегодня, 12:08
автор: EvilGomel
Открытая тема (нет новых ответов) Требуется надежный веб-дизайнер для разноплановой работы
7 dan-pro 788 Сегодня, 10:45
автор: 0pium
Открытая тема (нет новых ответов) ВНИМАНИЕ: Boomerang Partners - новая партнерская программа для онлайн гемблинга, которая заплатит тебе больше.
0 BoomerangPartners 98 Сегодня, 9:41
автор: BoomerangPartners


 



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