对php不是很了解 写了个简单的例子
现用c#调用php写的 webservice(soap WSDL)iis6.0+php5.2.8webservice如下
<?php
class WebService
{
public function Logout()
{
//header('Content-type: text/xml;');
return array("LogoutResult"=>array("1"));
}
}
$server = new SoapServer("WebService.wsdl");
$server->setClass("WebService");
$server->handle();
?>
c#如下 WebService ws = new WebService();
return dws.Logout();错误
客户端发现响应内容类型为“text/html”,但应为“text/xml”。
请求失败,错误信息为:
--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://sunity.org/"><SOAP-ENV:Body><ns1:LogoutResponse><ns1:LogoutResult><ns1:anyType>1</ns1:anyType></ns1:LogoutResult></ns1:LogoutResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
这种情况有见过的吗?
改写成这样
public function Logout()
{
header('Content-type: text/xml;');
return array("LogoutResult"=>array("1"));
}
也没用
不是该如何修改响应头
iis中自定义HTTP头也不对
错误:客户端发现响应内容类型为“text/xml,text/html”,但应为“text/xml”。
现用c#调用php写的 webservice(soap WSDL)iis6.0+php5.2.8webservice如下
<?php
class WebService
{
public function Logout()
{
//header('Content-type: text/xml;');
return array("LogoutResult"=>array("1"));
}
}
$server = new SoapServer("WebService.wsdl");
$server->setClass("WebService");
$server->handle();
?>
c#如下 WebService ws = new WebService();
return dws.Logout();错误
客户端发现响应内容类型为“text/html”,但应为“text/xml”。
请求失败,错误信息为:
--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://sunity.org/"><SOAP-ENV:Body><ns1:LogoutResponse><ns1:LogoutResult><ns1:anyType>1</ns1:anyType></ns1:LogoutResult></ns1:LogoutResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
这种情况有见过的吗?
改写成这样
public function Logout()
{
header('Content-type: text/xml;');
return array("LogoutResult"=>array("1"));
}
也没用
不是该如何修改响应头
iis中自定义HTTP头也不对
错误:客户端发现响应内容类型为“text/xml,text/html”,但应为“text/xml”。
为default_mimetype = "text/xml"
原因不知道,感觉和服务器设置有关,有能解释的再解释一下吧!
Content-Type:text/html,不设置的话就置空,如果设置成default_mimetype = "text/xml",C#访问php web service可以成功,但是你单独浏览某个php文件估计又不行了。
header('Content-type: text/xml;');
这句话不知要加在哪里,我不知道soap是在哪里响应输出的!
iis的自定义HTTP头 php也不会主动替换,只是在前面加了一下
在我机器上一点问题没有 C#的也没问题
上服务器就不行了
我在本地向服务器发请求 用wireshark抓包 发现 webservice不论是返给c# 还是php Content-type都是text/html
但我把webservice部署到局域网的另个机器上就没有问题,我再发请求就没有问题了