Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在soap客户端php上创建对象_Php_Soap - Fatal编程技术网

在soap客户端php上创建对象

在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中的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($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。谢谢你