我已经用php语言编写了一个soap web服务,它正确地在localhost上运行,但是当我在服务器上传它时,我可以看到它的wsdl文件并在soapUI中添加它的URL,但是当我调用它的函数时它显示内部服务器错误。
服务器的操作系统是centos6,php版本是php54,php soap已经存在。
出了什么问题?
<xs:element name="getServices">
<xs:complexType>
<xs:sequence>
<xs:element name="username" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
<xs:element name="mobileNum" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
$client = new SoapClient("http://IpAddress/ws/ws?wsdl");
try {
$response = $client->getServices(
array(
'username' => 'username',
'password' => 'pass',
'mobileNum' => '1111111',
));
return $response;
}
catch(Exception $e)
{
return $e->getMessage();
}
答案 0 :(得分:0)
尝试查看服务器的错误日志文件,它会告诉您错误发生原因的详细说明。
当服务器无法执行脚本时,通常会发生内部服务器错误,因为脚本不是因为错误而是因为其自身的限制,例如max_execution time,max_upload_size,post_size等。
答案 1 :(得分:0)
你的wsdl缺少一些要点:例如命名空间。
<?xml version="1.0" encoding="UTF-8"?>
<definitions name ="name"
targetNamespace="?"
xmlns:tns="?"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<xs:element name="getServices">
<xs:complexType>
<xs:sequence>
<xs:element name="username" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
<xs:element name="mobileNum" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</port>
</service>
</definitions>