我是PHP Soap的新手,但我相信我已经掌握了它。我的问题很奇怪,我在我的Apache / cent OS服务器上安装了soap-php模块。经过一些游戏,我能够连接到公共Web服务并使用它与PHP方法(使用SoapClient())所以我不认为这是一个配置错误。
当我尝试连接到我想要在本地服务器上本地托管的Web服务时。连接立即重置,我没有得到我正在尝试使用的Web服务的响应。
我自己试图解决这个问题,但是我还要考虑其他问题。
我知道WSDL就在那里并且可以访问,因为当我将URL放入浏览器时,我可以看到它。我知道这项服务正在运行,因为它正被其他应用程序使用。
我认为这不是PHP / Apache设置问题,因为我可以连接到其他Web服务并访问其中的方法。
然而,当我将测试应用指向我想要使用的服务时。我立即得到“连接被重置”。我使用了一个http siffer,我可以看到,我试图访问的机器根本就没有响应,好像它不在那里。下面是嗅探器日志。
客户端 - >服务器192.168.1.190 - > 74.xxx.xxx.xxx
获取/contact/pipeline/bettertest.php HTTP / 1.1 主持人:www.harms-software.com User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:14.0)Gecko / 20100101 Firefox / 14.0.1 接受:text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8 Accept-Language:en-us,en; q = 0.5 Accept-Encoding:gzip,deflate 连接:保持活力 Cookie:userinfo = XXXXXX%2CAdmin; __utma = 266616727.1802384666.1343229893.1346876009.1346935926.113; __utmz = 266616727.1346763531.101.17.utmcsr = millenniumcentral.com | utmccn =(引荐)| utmcmd =转诊| utmcct = /; __unam = b0971f8-138bebd9a81-7d1a81ba-869; __utmc = 266616727; __atuvc = 60%7C32%2C0%7C33%2C0%7C34%2C0%7C35%2C1%7C36; posts_rated = 1750
没有响应标头,因为 “连接被重置了 页面加载时重置了与服务器的连接。“
现在通常我会假设在两个服务器之间有一些端口被阻塞或者其他连接问题,但是我已经检查过了。端口80在托管WSDL的机器上打开。我在浏览器中查看WSDL也没有问题,因此我知道服务器在那里并可在端口80上访问。
以下是我正在尝试的php测试代码
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$log = fopen("debug.log","w");
fwrite($log,"about to create soap object!");
$client = new SoapClient("http://millennium.harms-software.com/MillenniumPipeline/MillenniumSDK.asmx?wsdl", array("trace" => 1, "soap_version" => SOAP_1_1, cache_wsdl => WSDL_CACHE_NONE));
fwrite($log,"created soap object!");
$logonArgs = array('User' => 'testing', 'Password' => 'temppass');
try{
$logonResult = $this->client->Logon($logonArgs);
}catch(SoapFault $soapFault){
//if failed, display soap message sent, received, and the soapfault generated
echo "Fault!!!";
var_dump($soapFault);
echo "<b>Request</b> :<br>", htmlentities($this->client->__getLastRequest()), "<br>";
echo "<b>Response</b> :<br>", htmlentities($this->client->__getLastResponse()), "<br>";
}
?>
我试图写出一个平面文件来查看代码是否正在执行,它似乎在创建soap对象后就死了。但是,我将这个完全相同的脚本指向另一个Web服务,它工作正常。
此时我不知道是什么导致服务器重置连接。如果有人有类似的东西请告诉我。