7

我正在为客户开发一个 api。我收到了以下信息:

API Url: http://xyz-crm.example/WebAPI/Custom/project_name/XML/

Username: foobar
password: spameggs

我需要在非 WSDL 模式下配置 PHP SOAP 客户端。我写了以下内容,但似乎不起作用:

$wsdl    = null;
$options = array(
    'uri'      => 'http://xyz-crm.example/WebAPI/Custom/project_name/XML/',
    'location' => 'http://xyz-crm.exmaple.com/WebAPI/Custom/project_name/XML/',
    'login'    => 'foobar',
    'password' => 'spameggs'
);
$client  = new SoapCLient($wsdl, $options);

我只想先对 api 进行一次成功的 ping 操作。看看事情是否正常。我在这里做错了什么?

更新 1

我做了以下更改:

$wsdl    = null;
$options = array(
    'uri'          => "http://xyz-crm.example/WebAPI/Custom/project_name/XML/",
    'location'     => "http://xyz-crm.example/",
    'Username'     => "foobar",
    'Password'     => "spameggs",
    'soap_version' => '1.2'
);
$client  = new SoapClient($wsdl, $options);
$client  = $client->getListings();

我得到错误:looks like we got no XML document

[由我编辑,hakre:此更新是作为回答 #1的反馈完成的。它使用缩短的 URL 更改位置选项(OP 未给出原因),并添加了soap_version选项(如答案#1 中所建议,但不是常量,而是字符串(包含无效值),所以应该难怪这会产生错误,答案#1(常数)中给出了正确的选项值,SOAP_1_1并且有意地,正确的值将是SOAP_1_2此示例的常数)。OP 评论的错误消息是“SOAP 错误:版本错误”。]

更新 2

我尝试了以下方法,但仍然失败:

$listing = $client->getListings(); 
$request = $client->__getLastRequest(); 

执行停止在第一行本身,而不会进入第二行。

[由我编辑,hakre:正如评论已经显示更新 1 中的错误配置选项在更新 2没有解决,如果它仍然不会失败将是一个奇迹。执行停止,因为抛出异常并且未完成错误/异常处理]

4

1 回答 1

2

Die URI 或文件结尾无所谓,甚至可以是.jpg,没有默认值。

看看类似的问题:这个 SOAP 错误是否意味着我认为的意思?

如果您将错误消息以及请求的 XML 输出放入问题中,将会很有帮助。

尝试将SoapClient实例数组中的 SOAP 版本设置为常量之一(尝试不同的常量):

new SoapClient($url, array("soap_version" => SOAP_1_1,.......

SOAP_1_2...

要调试 XML,请在发送请求之前/不发送请求之前尝试由 PHP SoapClient 调用创建的 Inspect XML的答案

您更新的问题的错误消息看起来不像来自 PHP,看起来更像是来自网络服务的答案,这意味着您的请求实际上正在工作。

于 2013-10-29T09:08:59.037 回答