首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发相同标记的php5 SOAP客户端

开发相同标记的php5 SOAP客户端
EN

Stack Overflow用户
提问于 2010-05-07 03:29:22
回答 1查看 383关注 0票数 0

我正在尝试生成一个SOAP XML请求,如下所示:

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dto="dto" xmlns:com="">
   <soapenv:Header>
      <dto:AuthenticationDTO>
     <dto:LOGIN_ID>login</dto:LOGIN_ID>
     <dto:LOGIN_PASSWORD>login</dto:LOGIN_PASSWORD>
  </dto:AuthenticationDTO>
   </soapenv:Header>
   <soapenv:Body>
  <com:createAccount>
     <com:AccountFields>
        <!--Zero or more repetitions:-->
        <dto:FieldDTO>
           <!--Optional:-->
           <dto:children/>
           <!--Optional:-->
           <dto:fieldType>GENERAL</dto:fieldType>
           <!--Optional:-->
           <dto:index>0</dto:index>
           <!--Optional:-->
           <dto:label>BusinessName</dto:label>
           <!--Optional:-->
           <dto:name>BizInfo-BusinessName</dto:name>
           <!--Optional:-->
           <dto:value>the business name</dto:value>
        </dto:FieldDTO>
        <!--Zero or more repetitions:-->
        <dto:FieldDTO>
           <!--Optional:-->
           <dto:children/>
           <!--Optional:-->
           <dto:fieldType>GENERAL</dto:fieldType>
           <!--Optional:-->
           <dto:index>0</dto:index>
           <!--Optional:-->
           <dto:label>BusinessCountry</dto:label>
           <!--Optional:-->
           <dto:name>BizInfo-Country</dto:name>
           <!--Optional:-->
           <dto:value>US</dto:value>
        </dto:FieldDTO>
     </com:AccountFields>
     <com:ApplicationNumber></com:ApplicationNumber>
     <com:CreditTerms></com:CreditTerms>
     <com:GenerateAccountIdIndicator>true</com:GenerateAccountIdIndicator>
  </com:createAccount>

我使用下面的代码得到一个响应:

代码语言:javascript
复制
    $matchCompany->FieldList->FieldDTO->fieldType = 'GENERAL';
    $matchCompany->FieldList->FieldDTO->label = 'Business Name';
    $matchCompany->FieldList->FieldDTO->name = 'BizInfo-BusinessName';
    $matchCompany->FieldList->FieldDTO->index = '0';
try
{  
    $result = $soapClient->getAccountInfo($matchCompany);     
    print "<pre>";
    print_r($result); 
    print "</pre>";
    echo "REQUEST:\n" . htmlentities($soapClient->__getLastRequest()) . "\n"; 

}
catch(SoapFault $fault)
{  
   echo $fault->faultcode . "-" . $fault->faultstring;  
   echo "REQUEST:\n" . htmlentities($soapClient->__getLastRequest()) . "\n"; 
} 

但是如果我尝试像这样数组fielddto项:

代码语言:javascript
复制
    //$matchCompany->FieldList->FieldDTO[]['fieldType'] = 'GENERAL';
//$matchCompany->FieldList->FieldDTO[]['label'] = 'Business Name';
//$matchCompany->FieldList->FieldDTO[]['name'] = 'BizInfo-BusinessName';
//$matchCompany->FieldList->FieldDTO[]['index'] = '0';

它将每个项目包装在它自己的FieldDTO标记中,而不是将所有四个项目都放在一个FieldDTO标记中。

我遗漏了什么?它看起来应该可以工作,但它并不完全正确。

EN

回答 1

Stack Overflow用户

发布于 2010-05-07 03:50:58

请注意,每次执行$matchCompany->FieldList->FieldDTO[]['any_field']时,数组的索引都会加1。您可以使用已定义并手动递增的索引(例如$matchCompany->FieldList->FieldDTO[$i]['any_field'] = 'any_value'),或者只需一次设置所有值:

代码语言:javascript
复制
$matchCompany->FieldList->FieldDTO[] = array(
    'fieldType' => 'GENERAL',
    'label' => 'Business Name',
    'name' => 'BizInfo-BusinessName',
    'index' => '0'
);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2783847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档