从PHP请求wsdl

从PHP请求wsdl,php,wsdl,Php,Wsdl,这是我的WSDL 我想编写PHP代码来请求此WSDL。这是我的密码。并返回未提供的地址 define("ADDRESSDOCTOR_WSDL_URL","http://validator5.addressdoctor.com/webservice5/v1/addressvalidation.asmx?WSDL"); define("ADDRESSDOCTOR_USER_LOGIN","***"); define("ADDRESSDOCTOR_USER_PASSWORD","****"); $p

这是我的WSDL

我想编写PHP代码来请求此WSDL。这是我的密码。并返回未提供的地址

define("ADDRESSDOCTOR_WSDL_URL","http://validator5.addressdoctor.com/webservice5/v1/addressvalidation.asmx?WSDL");
define("ADDRESSDOCTOR_USER_LOGIN","***");
define("ADDRESSDOCTOR_USER_PASSWORD","****");
$parameters = array(
    "FormatType"=>"WITH_ORGANIZATION",
    "FormatDelimiter"=>"TAB",
    "CountryType"=>"NAME_EN",
    "CountryOfOrigin"=>"OFF",
    "StreetWithHNo"=>true,
    "FormatWithCountry"=>false,
    "ElementAbbreviation"=>"OFF",
    "PreferredScript"=>"LATIN_1",
    "PreferredLanguage"=>"ENGLISH",
    "StreetWithNumber"=>false,
    "GlobalMaxLength"=>0,
    "MaxResultCount"=>20,
    "GlobalCasing"=>"UPPER",
    "StandardizeInvalidAddresses"=>"OFF",
    "FlexibleRangeExpansion"=>"ON",
    "ProcessMode"=>"BATCH",
    "MatchingScope"=>"ALL"
);

$address_element = array(
    "RecordID"=>"REC_1245887",
    "DeliveryAddressLines"=>"250 East Marshall Street",
    "Locality"=>"Richmond",
    "PostalCode"=>"23219",
    "Province"=>"Virginia",
    "Country"=>"USA");

for($i=0;$i<sizeof($address_element);$i++):
$client = new SoapClient(ADDRESSDOCTOR_WSDL_URL);

    $function = $client->Process(array("login"=>ADDRESSDOCTOR_USER_LOGIN,"password"=>ADDRESSDOCTOR_USER_PASSWORD,"parameters"=>array("ProcessMode"=>"BATCH","ValidationParameters"=>$parameters),"addresses"=>$address_element[$i]));
print_r(get_object_vars($function));
endfor;
define(“ADDRESSDOCTOR\u WSDL\u URL”)http://validator5.addressdoctor.com/webservice5/v1/addressvalidation.asmx?WSDL");
定义(“地址医生\用户\登录”,“***”);
定义(“地址医生\用户\密码”,“****”;
$parameters=数组(
“FormatType”=>“与_组织”,
“FormatDelimiter”=>“选项卡”,
“CountryType”=>“姓名”,
“原产国”=>“关闭”,
“Streetwithno”=>正确,
“FormatWithCountry”=>false,
“元素缩写”=>“关闭”,
“PreferredScript”=>“拉丁文1”,
“首选语言”=>“英语”,
“StreetWithNumber”=>错误,
“GlobalMaxLength”=>0,
“MaxResultCount”=>20,
“全局Casing”=>“UPPER”,
“StandardizeInvalidAddresses”=>“关闭”,
“FlexibleRangeExpansion”=>“打开”,
“ProcessMode”=>“批处理”,
“匹配范围”=>“全部”
);
$address\u元素=数组(
“RecordID”=>“REC_1245887”,
“DeliveryAddressLines”=>“马歇尔东街250号”,
“地点”=>“里士满”,
“PostalCode”=>“23219”,
“省”=>“弗吉尼亚州”,
“国家”=>“美国”);
对于($i=0;$i进程(数组(“登录”=>ADDRESSDOCTOR\u USER\u登录,“密码”=>ADDRESSDOCTOR\u USER\u密码”,“参数”=>数组(“处理模式”=>“批处理”,“验证参数”=>$parameters),“地址”=>$address\u元素[$i]);
打印(获取对象变量($function));
endfor;
返回: 数组([ProcessResult]=>stdClass对象([StatusCode]=>300[StatusMessage]=>
地址必须提供。)

您需要实际尝试这项工作,而不是让Stack为您完成

  • 在php.ini中启用PHPs soap模块,或使用phpinfo()验证其已启用
  • 编写一个脚本,从wsdl创建soap客户机
  • 使用soap客户端的getFunctions来验证您可以调用您在文章中提到的方法

  • 一旦你克服了这一切,你将“能够帮助”

    太好了。祝你好运。我已经找到了,现在我要开始了。请帮助我继续前进。我想这可能是你在地址数组上迭代的方式。我想你可能希望在没有循环的情况下传递它,并将其作为整个数组发送。不过,我需要信任来与服务一起验证;)我怎样才能把信用证寄给你。但我想发送一个批处理过程,在一个请求中发送多个地址。我基本上是想了解请求结构。从进程(地址->ArrayOfadAddress->地址->(所有地址输入参数,如街道、地点、交货地址行…)为了解开soap服务的神秘面纱,我使用了soapUI。我建议您安装它并从address doctor wsdl创建一个项目。确保选中了create mock requests复选框。然后您可以查看服务方法所需的xml。我认为这将有助于您形成php以正确地构建xml。