加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

错误:在PHP中调用SOAP cilent时“对象引用未设置为对象的实例”

发布时间:2020-12-13 16:25:10 所属栏目:PHP教程 来源:网络整理
导读:这是来自wsdl的数据 s:element name="CreateDraftLead"s:complexTypes:sequences:element minOccurs="0" maxOccurs="1" name="formId" type="s:string"/s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/s:element minOccurs="0" ma
这是来自wsdl的数据
<s:element name="CreateDraftLead">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="formId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Gender" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="AgeGroup" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="MobilePhone" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Birthday" nillable="true" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="District" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="email" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Region" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="LocationId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="LeadSourceId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="CompanyId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="SourceCampaignId" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="AllowEmail" nillable="true" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="Questions" type="tns:ArrayOfQuestion"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfQuestion">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Question" nillable="true" type="tns:Question"/>
</s:sequence>
</s:complexType>
<s:complexType name="Question">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string"/>
</s:sequence>
</s:complexType>

这是我的尝试代码

$client = new SoapClient("http://demo/demo.asmx?wsdl",array('trace' => 1,"exception" => 0));


        $data = array(
            'formId' => 1,'LocationId' => 1,'FirstName' => 'test','LastName' => 'test','MobilePhone' => 22222111,'email' => 'test@test.com','AllowEmail' => 0,'Region' => 'HK','LeadSourceId' => 11,'Questions' => array(
                "Question" => array("AgeGroup" => 10),"Question" => array("Gender" => 1),"Question" => array("Remarks" => 'test'),"Question" => array("Are you currently a member of any yoga or fitness centre?  " => 'Yes'),)
        );



        $result = $client->CreateDraftLead(array('parameters' => $data));

        var_dump($result);

这是由输入数据的结构引起的,如何解决?谢谢你的帮助.

错误信息:

Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in C:xampphtdocstest_soap.php:60 Stack trace: #0 C:xampphtdocstest_soap.php(60): SoapClient->__call('CreateDraftLead',Array) #1 C:xampphtdocstest_soap.php(60): SoapClient->CreateDraftLead(Array) #2 {main} thrown in C:xampphtdocstest_soap.php on line 60

更新:

谢谢你的帮助.现在可以发送到服务器

<?php
$client = new SoapClient("http://demo/demo.asmx?wsdl");

$data = array(
    'formId' => '1',//'Gender' => 1,//'AgeGroup' => 10,'MobilePhone' => '22222111','Birthday' => null,'District' => 'HK','CompanyId' => null,'SourceCampaignId' => null,'AllowEmail' => false,'Questions' => array(
        "Question" => array("AgeGroup" => 10),)
);

$result = $client->__soapCall("CreateDraftLead",array($data));

var_dump($result);
?>

问题仍然存在:

1)AllowEmail采用布尔值但是0,1,true,false返回错误:
无效的列名称’false’/服务器中的列名称’true’无效,但它不是例外

2)是minOccurs =’1’表示必须提供?经过测试可以忽略该字段,服务器仍然可以返回成功

谢谢你的努力.

请尝试以下(未测试):
<?php
$client = new SoapClient("http://demo/demo.asmx?wsdl","exception" => 0));

$data = array(
    'formId' => 1,array($data));

var_dump($result);

此外,你似乎没有提供像性别等所有必要的信息..你应该检查这个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读