C# 为什么php在使用soap之后发送application/x-gzip文件?
之前发生了什么 我正忙着向soap api添加一个新方法。在测试使用soap api的web应用程序之后,有一种方法不起作用。我没有例外,也不知道发生了什么 发生了什么事 当我像这样调用soap方法时:C# 为什么php在使用soap之后发送application/x-gzip文件?,c#,php,web-services,debugging,soap,C#,Php,Web Services,Debugging,Soap,之前发生了什么 我正忙着向soap api添加一个新方法。在测试使用soap api的web应用程序之后,有一种方法不起作用。我没有例外,也不知道发生了什么 发生了什么事 当我像这样调用soap方法时: <?php ini_set('display_errors', 1); error_reporting(E_ALL); date_default_timezone_set('Europe/Amsterdam'); ini_set("soap.wsdl_ca
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
date_default_timezone_set('Europe/Amsterdam');
ini_set("soap.wsdl_cache_enabled", 0);
ini_set("default_socket_timeout", 120);
$soap = new SoapClient('http://***********.nl/**********.svc?wsdl', array('exceptions' => TRUE));
$array = array(
'appkey' => "b4bf874r64gffrefrt4t334j63rertyh0"
);
$res = $soap->getUserList($array);
/*
$array = array(
'user' => "test"
);
$res = $soap->userExist($array);
*/
echo '<pre>';
echo print_r($res, true);
echo '</pre>';
?>
我明白了:
gzip文件,而不是包含打印内容的html文件。当我打开文件时,它如下所示:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
date_default_timezone_set('Europe/Amsterdam');
ini_set("soap.wsdl_cache_enabled", 0);
ini_set("default_socket_timeout", 120);
$soap = new SoapClient('http://***********.nl/**********.svc?wsdl', array('exceptions' => TRUE));
$array = array(
'appkey' => "b4bf874r64gffrefrt4t334j63rertyh0"
);
$res = $soap->getUserList($array);
/*
$array = array(
'user' => "test"
);
$res = $soap->userExist($array);
*/
echo '<pre>';
echo print_r($res, true);
echo '</pre>';
?>
我不知道为什么会这样。php版本是5.3.27,它看起来非常最新,我找不到任何描述这个问题的bug报告
我试图解决的问题
我尝试重新启动soap服务,并搜索了我的c#代码以查找任何错误,但似乎一切正常。php代码看起来也很不错。当我调用out注释的soap方法时,我得到了预期的结果。
即使我犯了一些编码错误,php也不应该这样做
我的问题
是否有人知道发生了什么,我如何解决这个问题。我认为这是一个奇怪的php错误。所有其他soap调用都给了我一个有效的响应
更新
我使用了nusoap:
$client=new nusoap_client('http://******************.nl/******************.svc?wsdl','wsdl');
$client->soap_defencoding='UTF-8';
$client->decode_utf8=false;
$param=数组('appkey'=>“B4BF874R64GFFRFRT4T334J63RERTYH0”);
$result=$client->call('getUserList',array('parameters'=>$param),'','',false,true);
回声';
回声打印(结果,真);
回声';
给出了相同的结果,所以我认为问题不在soap扩展中 解决了它 soap api或PHP代码都没有问题。这是一个恶意软件问题。检查时,我看到控制台出现了一些奇怪的错误。它试图从superfish.com加载javascript www.superfish.com/ws/sf_preload.jsp?dlsource=viktczu&userId=37078fed3574a308b5e298c9a3fd837&CTID=cE4IwJSsmtycAc&ver=13.1.4.31 在谷歌上搜索时,我发现这被认为是恶意软件,我把它从我的电脑上删除了
其他ajax响应(根本没有soap)也开始失败。现在我知道这是因为这个恶意软件。移除后,一切都恢复正常。您是否尝试过gzip对其进行放气以查看其内容?还没有。。。我在寻找一种方法之前从未这样做过。看起来Soap端点正在返回gzip数据。
我用winrar打开了gzip文件,其中包含一个我用notepad++打开的文件,它看起来像我期望的html。但是为什么php会这样发送呢?这是一个php/soap错误吗??