php - 如何从 Soap 请求中获取传输编码的分块字节响应?
问题描述
我在 Laravel 项目中使用 Laravel SOAP 客户端(https://github.com/CodeDredd/laravel-soap)。
下面给出的网络服务有几个功能。 https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl
我可以从他们中的大多数人那里获取数据。只有一个函数以字节格式返回 pdf 文件。当我尝试阅读响应时,我只得到一个空白数据。当我使用 SoapUI 时,它会将 pdf 文件返回给我。但是在 PHP 中它不能以某种方式工作。
例如,此代码毫无问题地返回数据。
public function getSupplyCarryTypes(Request $request)
{
$response = Soap::baseWsdl('https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl')
->withBasicAuth('999999', '999999testtest')
->withOptions([
'trace' => false,
'encoding' => 'UTF-8',
'cache_wsdl' => WSDL_CACHE_NONE,
])
->call('paramTehlikeliMaddeTasimaSekli',array(
'wsuser' => array('kullaniciAdi' => '999999', 'sifre' => '999999testtest')));
dd($response['return']['tehlikeliMaddeTasimaSekliListesi']);
}
但是当我尝试这个时,它返回null。它通常以字节形式返回 PDF 文件。至少它在 SoapUI 中运行良好。在检查 SoapUI 中的原始代码后,我发现唯一的区别是“传输编码:分块”。
public function getVoyageReport() // Not Working
{
$response = Soap::baseWsdl('https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl')
->withBasicAuth('999999', '999999testtest')
->withOptions([
'trace' => false,
'encoding' => 'UTF-8',
'cache_wsdl' => WSDL_CACHE_NONE,
])
->call('seferRaporuV3', array(
'wsuser' => array('kullaniciAdi' => '999999', 'sifre' => '999999testtest'),
'seferId' => '21042300246027'));
return $response->body();
}
如果有人在这方面帮助我,我会非常高兴。谢谢。
解决方案
推荐阅读
- sql-server - 通过 Excel VBA 从 SQL Server 获取数据时出现运行时错误
- python - Selenium 页面源中缺少 HTML 元素,但可以使用 BeautifulSoup 找到
- python - 遍历 selenium webdriver 的 driver.find_elements
- c# - 使进程从最顶部的窗口开始
- daml - Daml 沙箱持久性分类帐 ID 不匹配
- swift - 将 SceneKit 节点排列到网格中时遇到问题
- python - 如何在 Python 3 中使用 pandas DataFrame 动态生成 html 字符串?
- loadrunner - 多个用户的脚本失败
- c++ - CMake 错误:无法确定目标的链接语言
- php - 包含带有 try 和 catch 函数的文件