使用PHP进行复杂的soap调用

时间:2014-08-15 12:35:02

标签: php xml soap

我已经为此工作了大约4个小时,我真的很接近但只是错过了标记 - 这是xml需要的样子

<ws:Answer QuestionID="Q_CAM_ID" ws:Datatype="string">
        <ws:Value>6838</ws:Value>
</ws:Answer>

这是我得到的

<ns1:Answer QuestionID="Q_CAM_ID">
    <ns1:Value>6838</ns1:Value>
</ns1:Answer>

使用

$A1 = new StdClass();          
$A1->QuestionID = 'Q_CAM_ID';  
$A1->Value =6838;        

无论我尝试什么,我都无法获得“ws:Datatype =”string“”。我相信答案是以下或真正相似的

$A1 = new StdClass();                       
$A1->QuestionID = new StdClass();           
$A1->QuestionID->QuestionID ='Q_CAM_ID';    
$A1->QuestionID->DataType ='string';        
$A1->Value =6838; 

但我一直得到的是这个错误 可捕获的致命错误当soap调用完成后,类stdClass的对象无法转换为字符串。如果有人有线索我会非常感激

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用WSDL到php生成器,因为您只处理与需求类型匹配的PHP对象。而且,如果你是一个很好的WSDL到php生成器,那么你将拥有被命名为元素的PHP类。 您可以使用https://www.wsdltophp.comhttps://github.com/mikaelcom/WsdlToPhp

答案 1 :(得分:0)

也许我错过了一些东西但是如果你需要那个XML,为什么不把它作为一个字符串,然后把它转换成你想要做的?如果您没有使用WSDL或SimpleXML,我会执行以下操作。

$xml = 
'
<ws:Answer QuestionID="Q_CAM_ID" ws:Datatype="string">
    <ws:Value>6838</ws:Value>
</ws:Answer>
';