是啥导致soap响应在新服务器上没有返回数据?
Posted
技术标签:
【中文标题】是啥导致soap响应在新服务器上没有返回数据?【英文标题】:what causes soap response to return no data on new server?是什么导致soap响应在新服务器上没有返回数据? 【发布时间】:2017-07-26 19:46:04 【问题描述】:我们刚刚搬到新服务器以获取 tls 1.2。新服务器需要 php 5.6。在大多数情况下,我的代码有效。几个例外。我有两个来自不同供应商的 SOAP API 进程。一个工作正常,另一个返回:
Error: A847E54F5AEA4E798rt0.c.ie.o5DF59@4p7098Fs1lFf4v892c4m returned no data
中间部分是来自 API 的令牌,用于捕获响应中的数据流。问题是收到令牌后,响应的其余部分为空。这是基于此Five9's API: How to pull reports using SOAP API and Basic Authentication的相关代码
$runReportResult = $client->runReport($runReportParam);
if(isset($runReportResult->return))
$runReportData = $runReportResult->return;
$isReportRunningParam["identifier"] = $runReportData;
$isReportRunningParam["timeout"] = 10;
$isReportRunningResult = $client->isReportRunning($isReportRunningParam);
if(empty($isReportRunningResult->return))
$getReportResultParam["identifier"] = $runReportData;
$getReportResult = $client->getReportResult($getReportResultParam);
if(isset($getReportResult->return->records))
$getReportResultData = $getReportResult->return->records;
// data processing stuff removed for clarity
else
echo "Error: " . $runReportData . " returned no data";
else
echo "Error: " . $runReportData . " exceeded the report runtime limit";
else
echo "Error: " . $runReportParam["reportName"] . " wasn't found";
这条线一直在新服务器上抛出。 回声“错误:”。 $运行报告数据。 "没有返回数据"; $runReportData 是发生变化的令牌值,所以我得到了响应,但真实数据并没有做出来。它一定是某种服务器问题,只需要一点帮助来追踪它。
【问题讨论】:
【参考方案1】:答案令人抓狂,引出了另一个问题。
服务器设置为芝加哥时间。 php 脚本使用 UTC,如下所示:
echo date('Y-m-d H:i:s', time());
所以实际上我是在要求将来在没有可用数据时提供报告。
新问题,为什么 php 使用 UTC 而不是服务器时间?在 ini 文件中它被设置为 UTC!
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "UCT"
希望这可以帮助某人在某天节省一些时间!
【讨论】:
以上是关于是啥导致soap响应在新服务器上没有返回数据?的主要内容,如果未能解决你的问题,请参考以下文章
返回 JSON 响应的 SOAP Web 服务的 URL 格式
CXF方式搭建本地webservice服务和soap方式调用踩坑