在soap客户端php上创建对象
我试图使用php中的soap库创建一个新对象,代码如下:在soap客户端php上创建对象,php,soap,Php,Soap,我试图使用php中的soap库创建一个新对象,代码如下: <?php try{ $wsdl="https://THE.IP.HERE:PORT/B1WS/WebReferences/LoginService.wsdl"; $client=new SoapClient($wsdl, array('location' => 'https://THE.IP.HERE:PORT/B1WS/Service.asmx', 'trace' => true)); var_dump($
<?php
try{
$wsdl="https://THE.IP.HERE:PORT/B1WS/WebReferences/LoginService.wsdl";
$client=new SoapClient($wsdl, array('location' => 'https://THE.IP.HERE:PORT/B1WS/Service.asmx', 'trace' => true));
var_dump($client);
echo "Types: -> ";
print_r($client->__getTypes());
echo "Functions: -> ";
var_dump($client->__getFunctions());
$res=$client->Login(array(
'DatabaseServer' => 'THE.IP.HERE',
'DatabaseName' => 'DATABASE_NAME',
'DatabaseType' => 'dst_MSSQL2012',
'DatabaseUsername' => 'USERNAME',
'DatabasePassword' => 'DATABASE',
'CompanyUsername' => 'USERNAME',
'CompanyPassword' => '****',
'Language' => 'ln_English',
'LicenseServer' => 'THE.IP.HERE:30000'));
print_r($res);
echo htmlentities($client->__getLastRequest());
}
catch( SoapFault $e )
{
echo htmlentities($client->__getLastRequest());
print_r($e);
}
?>
我得到以下错误:
致命错误:对C:\wamp\www\mysite.local\teste.php第40行的非对象调用成员函数\uu getLastRequest()
哪一行是echo htmlentities($client->u getLastRequest());关于崇高的文本
我在php上激活了soap扩展。im使用PHP5.4.12
有人能帮上忙吗
谢谢所以,我把这个页面移到了一个在线服务器上,我已经可以得到一些关于阵列的信息了。。但我认为这不是我希望得到的
object(SoapClient)#1 (4) {
["location"]=>
string(42) "https://MY.IP:PORT/B1WS/Service.asmx"
["trace"]=>
int(1)
["_soap_version"]=>
int(1)
["sdl"]=>
resource(2) of type (Unknown)
}
Types: ->
Array
(
[0] => struct LoginResponse {
string SessionID;
}
[1] => struct LogoutResponse {
}
[2] => struct MsgHeader {
string SessionID;
}
[3] => struct Login {
string DatabaseServer;
string DatabaseName;
DatabaseType DatabaseType;
string CompanyUsername;
string CompanyPassword;
Language Language;
string LicenseServer;
}
[4] => string DatabaseType
[5] => string Language
[6] => struct Logout {
}
)
Functions: -> array(4) { [0]=> string(38) "LoginResponse Login(Login $parameters)" [1]=> string(41) "LogoutResponse Logout(Logout $parameters)" [2]=> string(38) "LoginResponse Login(Login $parameters)" [3]=> string(41) "LogoutResponse Logout(Logout $parameters)" }
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="LoginService"><SOAP-ENV:Body><ns1:Login><ns1:DatabaseServer>MY.IP:PORT</ns1:DatabaseServer><ns1:DatabaseName>MYDATABASE</ns1:DatabaseName><ns1:DatabaseType>dst_MSSQL2012</ns1:DatabaseType><ns1:CompanyUsername>user</ns1:CompanyUsername><ns1:CompanyPassword>pass</ns1:CompanyPassword><ns1:Language>ln_English</ns1:Language><ns1:LicenseServer>MY.IP:30000</ns1:LicenseServer></ns1:Login></SOAP-ENV:Body></SOAP-ENV:Envelope>
SoapFault Object
(
[message:protected] => Invalid XML
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /var/www/vhosts/domain.pt/httpdocs/teste.php
[line:protected] => 45
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /var/www/vhosts/domain.pt/httpdocs/teste.php
[line] => 45
[function] => __call
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => Login
[1] => Array
(
[0] => Array
(
[DatabaseServer] => MY.IP:PORT
[DatabaseName] => MYDATABASE
[DatabaseType] => dst_MSSQL2012
[DatabaseUsername] => user
[DatabasePassword] => pass
[CompanyUsername] => companyuser
[CompanyPassword] => companypass
[Language] => ln_English
[LicenseServer] => MY.IP:30000
)
)
)
)
[1] => Array
(
[file] => /var/www/vhosts/domain.pt/httpdocs/teste.php
[line] => 45
[function] => Login
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => Array
(
[DatabaseServer] => MY.IP:PORT
[DatabaseName] => MYDATABASE
[DatabaseType] => dst_MSSQL2012
[DatabaseUsername] => user
[DatabasePassword] => pass
[CompanyUsername] => companyuser
[CompanyPassword] => companypass
[Language] => companypass
[LicenseServer] => MY.IP:30000
)
)
)
)
[previous:Exception:private] =>
[faultstring] => Invalid XML
[faultcode] => env:Sender
[detail] => stdClass Object
(
[ErrorList] => stdClass Object
(
[Error] => System Id = 37574776, Line Number = 2, Column Number = 1, Description = Invalid document structure
)
)
)
object(SoapClient)#1(4){
[“位置”]=>
字符串(42)”https://MY.IP:PORT/B1WS/Service.asmx"
[“跟踪”]=>
int(1)
[“\u soap\u version”]=>
int(1)
[“sdl”]=>
类型为(未知)的资源(2)
}
类型:->
排列
(
[0]=>struct LoginResponse{
字符串SessionID;
}
[1] =>结构Logout响应{
}
[2] =>结构MsgHeader{
字符串SessionID;
}
[3] =>结构登录{
字符串数据库服务器;
字符串数据库名;
数据库类型数据库类型;
字符串CompanyUsername;
字符串CompanyPassword;
语言;
字符串许可服务器;
}
[4] =>字符串数据库类型
[5] =>字符串语言
[6] =>结构注销{
}
)
函数:->数组(4){[0]=>string(38)“LoginResponse登录(Login$parameters)”[1]=>string(41)“LogoutResponse注销(Logout$parameters)”[2]=>string(38)“LoginResponse登录(Login$parameters)”[3]=>string(41)“LogoutResponse注销(Logout$parameters)”}
MY.IP:PORTMYDATABASEdst_MSSQL2012userpassln_EnglishMY.IP:30000
SoapFault对象
(
[消息:受保护]=>无效的XML
[字符串:异常:私有]=>
[代码:受保护]=>0
[文件:受保护]=>/var/www/vhosts/domain.pt/httpdocs/teste.php
[线路:受保护]=>45
[跟踪:异常:专用]=>数组
(
[0]=>阵列
(
[文件]=>/var/www/vhosts/domain.pt/httpdocs/teste.php
[行]=>45
[函数]=>\u调用
[class]=>SoapClient
[类型]=>->
[args]=>数组
(
[0]=>登录
[1] =>阵列
(
[0]=>阵列
(
[DatabaseServer]=>MY.IP:端口
[DatabaseName]=>MYDATABASE
[DatabaseType]=>dst_MSSQL2012
[数据库用户名]=>用户
[数据库密码]=>通过
[CompanyUsername]=>companyuser
[CompanyPassword]=>companypass
[语言]=>ln\U英语
[LicenseServer]=>MY.IP:30000
)
)
)
)
[1] =>阵列
(
[文件]=>/var/www/vhosts/domain.pt/httpdocs/teste.php
[行]=>45
[功能]=>登录
[class]=>SoapClient
[类型]=>->
[args]=>数组
(
[0]=>阵列
(
[DatabaseServer]=>MY.IP:端口
[DatabaseName]=>MYDATABASE
[DatabaseType]=>dst_MSSQL2012
[数据库用户名]=>用户
[数据库密码]=>通过
[CompanyUsername]=>companyuser
[CompanyPassword]=>companypass
[语言]=>companypass
[LicenseServer]=>MY.IP:30000
)
)
)
)
[上一个:例外:私有]=>
[faultstring]=>无效的XML
[faultcode]=>环境:发送方
[详细信息]=>stdClass对象
(
[ErrorList]=>stdClass对象
(
[错误]=>系统Id=37574776,行号=2,列号=1,说明=无效的文档结构
)
)
)
如果将这两行从try/catch块中取出,会发生什么错误<代码>$wsdl=”https://THE.IP.HERE:PORT/B1WS/WebReferences/LoginService.wsdl"; $client=newsoapclient($wsdl,array('location'=>)https://THE.IP.HERE:PORT/B1WS/Service.asmx“,”trace'=>true))代码>谢谢Danny的回复。注释这些行会给我一个提示:未定义变量:客户端在。。。在这一行上:var_dump($client),同样的错误出现在print_r($client->u getTypes())行上;还有一个致命错误:在(…)中的非对象上调用成员函数_getTypes(),与上一个通知位于同一行。我怀疑在实例化SoapClient对象时出现了问题。尝试将错误级别设置为尽可能高(error\u reporting(E\u ALL)
)并查看是否出现其他问题。第45行显示:“LicenseServer”=>“MY.IP:30000”);好了,问题解决了。问题是我发送的参数比函数预期的要多。我的服务器使用UTF-8,XML验证UTF-16。谢谢你