要与 OptiCore Warehouse-Cloud 服务集成,您需要在包含 XML 的 BODY 中执行 POST 请求 ClientOrder_CreateUpdate。此请求所需的 HTTP 标头是 Content-Length,如果未指定,则服务器简单地超时连接。
告诉我如何计算 PHP 中 Content-Length 的这个值?
这是 XML 请求正文
<?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/"><soap:Body><ClientOrder_CreateUpdate xmlns="http://cowms.ru/outbound"><User>Onwer54797</User><Pass>99dc684baa6af26767e849335db57488</Pass><ClientOrderCode>40</ClientOrderCode><OrderDate>2020-06-16</OrderDate><ExpectedDeliveryDate>2020-06-16</ExpectedDeliveryDate><ExpectedShipmentDate>2020-06-16</ExpectedShipmentDate><OutcomeWarehouse_id>48</OutcomeWarehouse_id><Owner_id>54797</Owner_id><Client_id>0</Client_id><Contractor_id>0</Contractor_id><Agent_id>0</Agent_id><DeliveryType_id>13</DeliveryType_id><DeliveryType_Parameters><DeliveryType_Parameters><ParameterName>PVZCode</ParameterName><ParameterValue>MSK2</ParameterValue></DeliveryType_Parameters><DeliveryType_Parameters><ParameterName>SUMTOPAY</ParameterName><ParameterValue>500.00</ParameterValue></DeliveryType_Parameters></DeliveryType_Parameters><DeliveryMode_id>1</DeliveryMode_id><ClientOrder_Positions><ClientOrder_Positions><ClientOrder_PositionCode>62</ClientOrder_PositionCode><Sku_id></Sku_id><Unit_id>784</Unit_id><StockType_id>0</StockType_id><Price>1199.00</Price><VAT>0</VAT><Qty>1</Qty><IncomeRequest_PositionCode></IncomeRequest_PositionCode><LabelText></LabelText></ClientOrder_Positions><ClientOrder_Positions><ClientOrder_PositionCode>63</ClientOrder_PositionCode><Sku_id></Sku_id><Unit_id>784</Unit_id><StockType_id>0</StockType_id><Price>779.00</Price><VAT>0</VAT><Qty>1</Qty><IncomeRequest_PositionCode></IncomeRequest_PositionCode><LabelText></LabelText></ClientOrder_Positions><ClientOrder_Positions><ClientOrder_PositionCode>64</ClientOrder_PositionCode><Sku_id></Sku_id><Unit_id>784</Unit_id><StockType_id>0</StockType_id><Price>2999.00</Price><VAT>0</VAT><Qty>1</Qty><IncomeRequest_PositionCode></IncomeRequest_PositionCode><LabelText></LabelText></ClientOrder_Positions></ClientOrder_Positions></ClientOrder_CreateUpdate></soap:Body></soap:Envelope>
在 POSTMAN 请求中,由于该值是自动计算的,但如何在 PHP 中执行此操作?https://yadi.sk/i/oaSYQxLof1pS3w
这是 Bitrix ......并且以字节为单位的 mbstring.func_overload 2 strlen 被替换为 mb_strlen 计算字符数而不是字节数,因此,计算不正确。
这是解决方案
建议在这里 https://dev.1c-bitrix.ru/support/forum/messages/forum6/topic133333/message658007/?result=vote4user#message658007
正确且安全的方法,包括重载函数时
mbstring.func_overload:对enSO的回应