如何使用Axios NPM库发送带XML SOAP参数的GET请求?
Axios中用GET请求传递SOAP XML参数的问题
首先明确两个核心点:
- HTTP规范里,GET请求不应当携带请求体,尽管部分客户端支持手动设置,但绝大多数服务器会直接忽略GET请求的body内容,这不符合HTTP的设计语义。
- SOAP协议的标准传输方式是使用POST请求,将XML作为请求体发送。
针对你代码里的疑问:
params字段是用来生成URL查询字符串的,会把传入的对象转成?key1=value1&key2=value2的格式,直接传XML会被URL编码,完全无法被SOAP服务器识别,所以这里不能放XML。data字段在Axios的GET请求中不会被发送,即使你手动设置了,也大概率会被服务器忽略,所以这里也不对。
可选方案(不推荐)
如果由于特殊限制必须用GET请求,只能将XML编码后作为查询参数的一个值传递,但存在URL长度限制、不符合语义的问题:
await Axios.get(url, { params: { soapRequest: encodeURIComponent(xmls) }, headers: { "Content-Type": "text/xml;charset=UTF-8" } });
标准正确做法(推荐)
遵循SOAP协议的标准,改用POST请求,将XML直接放在data中:
await Axios.post(url, xmls, { headers: { "Content-Type": "text/xml;charset=UTF-8" } });
这样服务器才能正确解析请求体中的SOAP XML内容,完全符合HTTP和SOAP的规范。
内容的提问来源于stack exchange,提问作者AliAvci
相关产品推荐
相关产品推荐

