Reactjs Can';无法获取用于此XMLSOAP请求的语法-400错误
在React JS中使用SOAP API,除了这个函数不断返回400错误外,一切都很好 使用Axios使用以下语法发出POST请求 目标是获得特定的客户端ID并能够编辑指定的字段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
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>