【问题标题】:php soap redirect after execution not working执行后php soap重定向不起作用
【发布时间】:2020-10-13 18:15:08
【问题描述】:

我正在为游戏运行私人服务器,但我遇到了肥皂问题。如果服务器在线,一切正常,它可以在运行soap命令后重定向我,但如果我的服务器关闭,它就不会再重定向我了。相反,它会告诉我这个错误

致命错误:未捕获的 SoapFault 异常:[HTTP] 无法连接到 C:\xampp\htdocs\SoapSite\testfile.php 中的主机:16 堆栈跟踪:#0 [内部函数]:SoapClient->__doRequest('__call('executeCommand', Array) #2 {main} 在第 16 行的 C:\xampp\htdocs\SoapSite\testfile.php 中抛出

这是我的代码

<?php
$soapHost = "127.0.0.1";
$soapPort = "7878";
$soapUsername = "soapuser";
$soapPassword = "12345";

$client = new SoapClient(NULL, array(
    'location' => "http://$soapHost:$soapPort/",
    'uri'      => 'urn:TC',
    'style'    => SOAP_RPC,
    'login'    => $soapUsername,
    'password' => $soapPassword,
));

$command = "account create ".$_POST['uname']." ".$_POST['pw'];
$result = $client->executeCommand(new SoapParam($command, 'command'));
header('location: ../index.php');
?>

【问题讨论】:

    标签: php soap


    【解决方案1】:

    好吧,由于未捕获异常而发生致命错误,因此 PHP 脚本在该点停止并且不再执行发送您的重定向(位置标头)。

    我建议捕获异常:

    // [...] other code before the execute here
    try {
      $result = $client->executeCommand(new SoapParam($command, 'command'));
    }
    catch (SoapFault $e) {
      // could add some optional logging/error handling here
    }
    header('location: ../index.php');
    

    或者,您可以事先以某种方式 ping 服务器,并且仅在请求确实存在时才运行请求,但这可能会很麻烦,具体取决于响应时间和超时设置等。

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 2018-08-15
      • 1970-01-01
      • 2016-01-12
      • 2017-03-06
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多