我正在尝试使用 PHP Soap Client 类在 PHP 中进行 SOAP 调用。我设法连接到 WDSL 文件,但它不接受我的参数。以下是此次通话所需的所有必要信息。当我输入以下内容时:
$wsdlUrl = 'https://irm.cooperboating.com/rdpwincentralsvc/irmpublic.asmx?WSDL';
$client = new SoapClient($wsdlUrl);
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
我得到:
// Output from getFunctions()
[26]=>
string(83) "GetCourseInformationResponse GetCourseInformation(GetCourseInformation $parameters)"
// Output from getTypes()
[117]=>
string(63) "struct GetCourseInformation {
GetCourseInformation_irmRQ RQ;
}"
[118]=>
string(152) "struct GetCourseInformation_irmRQ {
irmWebSvcCredentials Credentials;
string CourseNumber;
string CourseID;
dateTime StartDate;
dateTime EndDate;
}"
[4]=>
string(104) "struct irmWebSvcCredentials {
string LogonID;
string Password;
string DataPath;
string DatabaseID;
}"
在阅读了来自:如何使用 SoapClient 类进行 PHP SOAP 调用的答案后, 我尝试了以下操作:
class irmWebSvcCredentials {
public function __construct() {
$this->LogonID = "SomeLogin";
$this->Password = "SomPass";
$this->DataPath = "SomePath";
$this->DatabaseID = "SomeId";
}
}
try {
$wsdlUrl = 'https://irm.cooperboating.com/rdpwincentralsvc/irmpublic.asmx?WSDL';
$client = new SoapClient($wsdlUrl);
$credentials = new irmWebSvcCredentials();
$params = array(
"Credentials" => $credentials,
"CourseNumber" => "",
"CourseID" => "",
"StartDate" => "2019-12-05T18:13:00",
"EndDate" => "2025-12-29T18:13:00",
);
$response = $client->GetCourseInformation(array($params));
var_dump($response);
}
catch(Exception $e) {
echo $e->getMessage();
}
我还尝试将“凭据”作为数组而不是类输入,因为其他一些答案建议如下:
当我调用 $client->GetCourseInformation 时,我为参数输入的内容似乎并不重要,只要我在数组结构中提供一个参数,它总是给我相同的输出,即:
使用 Postman,我已经能够获得预期的输出,这让我相信我没有提供某个参数。最后,这是我在 Postman 中提供的正文,以获取内容类型为 text/xml 的预期输出:
有什么我没有提供的吗?还是这个问题与 API 本身有关?
一只甜甜圈