【发布时间】:2014-02-24 18:32:21
【问题描述】:
我正在尝试使用 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);
}
?>
我收到以下错误:
致命错误:在第 40 行调用 C:\wamp\www\mysite.local\teste.php 中非对象的成员函数 __getLastRequest()
哪一行是 echo htmlentities($client->__getLastRequest());关于崇高的文字。
我在我的 php.ini 上激活了 soap 扩展。我正在使用 php 5.4.12
有人可以帮忙吗?
谢谢
【问题讨论】:
-
如果将这两行从try/catch块中取出,会出现什么错误?
$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)); -
感谢丹尼的回复。评论这些行它给了我一个通知:未定义变量:client in ... 在这一行:var_dump($client) 同样,在行 print_r($client->__getTypes());还有一个 - 致命错误:在与最后一个 NOTICE 位于同一行的非对象 in(...) 上调用成员函数 __getTypes()。
-
我怀疑实例化 SoapClient 对象时出现问题。尝试将您的错误级别设置为尽可能高 (
error_reporting(E_ALL)),看看是否还有其他问题。