“错误获取http body”与php SoapClient


"Error Fetching http body" with php SoapClient

我在使用 Soap 将用户数据提交到服务器时遇到一些问题。我得到的只是:
获取 http 正文、无内容长度、连接关闭或分块数据时出错我做错了什么吗?

$client = new SoapClient(APPPATH.'my.wsdl',array(
    'login' => 'user',
    'password' => 'pass',
    'location' => 'http://gimmeyadata.com/crm/regserv?wsdl',
    'trace' => true,
    )
);
$result = $client->register(array(
    'Email' => 'me@mail.com',
    'Gender' => 'm',
    'First name' => 'Oliver',
    'Last name' => 'Liermann',
    'Language code' => 'de-de',
));

最后一个响应标头:HTTP/1.1 200 OK X-SiteConfidence: jenppb601 Content-Location: http://.***.*/general/html/pages/layouts/columnContent.jsp Content-Language: de-DE 内容类型: text/html;charset=UTF-8 日期: 星期五, 18 五月 2012 15:50:01 GMT 传输编码: 分块 连接: 保持活动状态 连接: 传输编码 设置-cookie: JSESSIONID=0a6d28f530d798c4676f5949491a82035d98e25ff6f.e38Ka38Sax4TbO0MaheKbhaTbh8Te6fznA5Pp7ftolbGmkTy;路径=/缓存控制:私有

最后一个请求标头:POST/html/de_DE/index_DE/index.html HTTP/1.1 主机:**.*连接:保持活动 用户代理:PHP-SOAP/5.2.13 内容类型:文本/xml;charset=utf-8 SOAPAction: " 内容长度: 937 授权: Basic c3RyZ19ka29zaGF2ZTpsNFB3TVZqDlRhZUc1cg== Cookie: JSESSIONID=0a6e28e930d70301b8f6dd3e8a2598bff7cef065809a.e38Pa3mLbx4Oci0Mah4Qb34TbxmOe6fznA5Pp7etoltGmkTy;BIGipServerPirobase=254438666.20480.0000;

PHP 版本: 5.2.13

尝试使用

PHP 5.3

$client = new SoapClient("< some url  >", 
    array(
        'trace' => 1,
        'stream_context' => stream_context_create(
            array(
                'http' => array(
                    'protocol_version' => 1.0,
                ),
            )
        ),
    )
);

在 PHP 5.4.4 中,如果没有 Transfer-Encoding: chunked,它就不起作用:

$client = new SoapClient("< some url  >", 
    array(
        'trace' => 1,
        'stream_context' => stream_context_create(
            array(
                'http' => array(
                    'protocol_version' => 1.0,
                    'header' => "Transfer-Encoding: chunked'r'n",
                ),
            )
        ),
    )
);

我在使用 UPS 运输 API 时遇到问题

这是我之前的肥皂客户端

$client = new SoapClient("Your URL or Manifest", 
array(
    'soap_version'  => 'SOAP_1_1',
    'trace' => 1
)

(;

这解决了问题(我使用的是 PHP 7.2(

$client = new SoapClient("Your URL or Manifiest", 
array(
    'trace' => 1,
    'stream_context' => stream_context_create(
        array(
            'http' => array(
                'protocol_version' => 1.0,
            ),
        )
    ),
)

(;