Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Can';无法获取用于此XMLSOAP请求的语法-400错误_Reactjs_Xml_Api_Soap_Syntax - Fatal编程技术网

Reactjs Can';无法获取用于此XMLSOAP请求的语法-400错误

Reactjs Can';无法获取用于此XMLSOAP请求的语法-400错误,reactjs,xml,api,soap,syntax,Reactjs,Xml,Api,Soap,Syntax,在React JS中使用SOAP API,除了这个函数不断返回400错误外,一切都很好 使用Axios使用以下语法发出POST请求 目标是获得特定的客户端ID并能够编辑指定的字段 let getExtraInfo = `<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml

在React JS中使用SOAP API,除了这个函数不断返回400错误外,一切都很好

使用Axios使用以下语法发出POST请求

目标是获得特定的客户端ID并能够编辑指定的字段

let getExtraInfo = `<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <UpdateClientAdditionalFields xmlns="http://www.ozsoft.com.au/VETtrak/api/complete">
      <token>${token}</token>
      <clientCode>09224</clientCode>
      <additionalFieldData>
        <AdditionalData>
          <Gender>M</Gender>
        </AdditionalData>
      </additionalFieldData>
    </UpdateClientAdditionalFields>
  </soap:Body>
</soap:Envelope>`
是否有人能够提供一些关于如何使用React JS执行此请求的见解。我已经直接询问了开发人员,但他们的回答是用PHP编写的,对这个具体问题没有帮助

其他字段的列表也可以在此处找到

如果需要,我可以提供更多信息

更新

我已经添加了头并检查了令牌是否正确-我也没有在使用其他函数使用令牌进行其他请求时遇到问题

我试过下面的语法

`<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:com="http://www.ozsoft.com.au/VETtrak/api/complete">
<soap:Body>
  <com:UpdateClientAdditionalFields>
     <com:token>676767676</com:token>
     <com:clientCode>09224</com:clientCode>
     <com:additionalFieldData>"<com:AdditionalData><com:Gender>M></com:Gender></com:AdditionalData>"</com:additionalFieldData>
  </com:UpdateClientAdditionalFields>
</soap:Body>
</soap:Envelope>`
`
676767676
09224
“M>”
`
`
${token}
09224
M>
`
如果我执行以下请求

`<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:com="http://www.ozsoft.com.au/VETtrak/api/complete">
<soap:Body>
  <com:UpdateClientAdditionalFields>
     <com:token>${token}</com:token>
     <com:clientCode>09224</com:clientCode>
     <com:additionalFieldData><com:AdditionalData>string</com:AdditionalData></com:additionalFieldData>
  </com:UpdateClientAdditionalFields>
</soap:Body>
</soap:Envelope>`
`
${token}
09224
一串
`
我得到一个“解析附加数据XML时出现问题:根级别的数据无效。第1行,位置1。”错误。我知道令牌和客户端代码很好,因为当我不包含它们时,我会收到一个身份验证错误/客户端不存在响应

那么当我这样做的时候:

`<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:com="http://www.ozsoft.com.au/VETtrak/api/complete">
<soap:Body>
  <com:UpdateClientAdditionalFields>
     <com:token>${token}</com:token>
     <com:clientCode>09224</com:clientCode>
     <com:additionalFieldData><com:AdditionalData><gender>M</gender><com:/AdditionalData></com:additionalFieldData>
  </com:UpdateClientAdditionalFields>
</soap:Body>
</soap:Envelope>`
`
${token}
09224
M
`

我得到了通常的400错误。

在查看WSDL中的
UpdateClientAdditionalFields
之后,您的一个参数似乎是错误的。顶部元素定义为:

  <s:element name="UpdateClientAdditionalFields">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="clientCode" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="additionalFieldData" type="s:string"/>
      </s:sequence>
    </s:complexType>
  </s:element>
尝试使用字符串或不使用此字段,看看它是否有效(因为它是可选的
minOccurs=“0”

此外,您的令牌可能错误:

<token>${token}</token>
用这些更改再试一次,看看是否有效

根据评论编辑

您是否为
标记
客户端代码
附加字段数据
元素发送了正确的值?我的意思是实际的、可用的值,所有类型的字符串,而不是像
${token}
这样的占位符或XML元素,而不是字符串值

您的SOAP请求应该如下所示(不要忘记添加
SOAPAction
HTTP头):


这里的正确值
这里的正确值
这里的正确值

嗨!谢谢你回复我。你说的每句话我都试过了,但还是没用。当我不包括字段时,它会给我一个响应,说“无法应用其他数据:值不能为null。参数名称:s”嗨!谢谢你回复我。哪个参数是错误的?在我看来这一切都是正确的。你说的每句话我都试过了,但还是没用。当我不包括字段时,它会给我一个响应,说“无法应用其他数据:值不能为null。参数名称:s”。此外,令牌变量刚从用户进行身份验证时传入。如果令牌错误,它只会对请求返回未经授权的响应。所以令牌没有问题。@simlimsd4:请参阅我答案的更新。太长了,无法发表评论。谢谢你的回复-但还是没有运气。我知道代币有效,因为我用它提出其他请求。即使我手动输入令牌,我也会得到一个400错误,不管令牌是否正确,这使我认为这仍然是语法错误。我已经尝试了所有建议。我已经更新了我的问题,以反映我还做了什么。你没有尝试所有建议。当WSDL明确指出它是一个
字符串而不是XML元素时,您仍然在为
additionalFieldData
字段发送XML标记。
附加字段数据的文档说明是什么。您需要以什么格式发送到那里?
  <s:element name="UpdateClientAdditionalFields">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="clientCode" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="additionalFieldData" type="s:string"/>
      </s:sequence>
    </s:complexType>
  </s:element>
  <additionalFieldData>
    <AdditionalData>
      <Gender>M</Gender>
    </AdditionalData>
  </additionalFieldData>
<token>${token}</token>
SOAPAction: "http://www.ozsoft.com.au/VETtrak/api/complete/UpdateClientAdditionalFields"
<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:com="http://www.ozsoft.com.au/VETtrak/api/complete">
   <soap:Body>
      <com:UpdateClientAdditionalFields>
         <com:token>proper value here</com:token>
         <com:clientCode>proper value here</com:clientCode>
         <com:additionalFieldData>proper value here</com:additionalFieldData>
      </com:UpdateClientAdditionalFields>
   </soap:Body>
</soap:Envelope>