服务器无法为请求提供服务,因为媒体类型不受支持 Soap Nodejs

The server cannot service the request because the media type is unsupported Soap Nodejs

我已经在 nodejs 中使用使用 wsdl 项目的库 "soap" 构建并 api。

我正在尝试执行 post,但在响应正文中收到此错误:服务器无法为请求提供服务,因为媒体类型不受支持;同样在响应正文中,我收到了这条消息:无法处理消息,因为内容类型 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml;字符集=utf-8。我做了一些研究,发现这是服务器和客户端之间的 soap 版本问题。

我试试这个:

  1. 创建 soap 客户端时添加了 forceSoap12Headers:false 和 viceverse
  2. 将带有接受内容和内容类型的 soap 库重写为:text/xml; charset=utf-8,也改变属于soap v1.1
  3. 的所有方案
  4. 尝试在请求中添加 httpHeader 'Accept' 'text/xml'

这是我的代码的一部分:

 MethodTest: async function(wsdl){
            try{
            var client  =  soap.createClient(wsdl,{forceSoap12Headers:false},async (err,result)=>{
                if(err){

                }else{
                    var descripcion = await this.ServiceDescription(wsdl); 
            if(!descripcion.error){
                var body = { _xml:  "<i0:GetAccountBalance>"+
                   "<i0:dc>"+
                      "<i0:RequestId>000</i0:RequestId>"+
                      "<i0:SystemId>WEB</i0:SystemId>"+
                      "<i0:SourceId>AR</i0:SourceId>"+
                      "<i0:AccountNumber>42526372</i0:AccountNumber>"+
                   "</i0:dc>"+
                   "<i0:dcSecurity>"+
                      "<i0:WebUser>NDsVwQwRbwbuY / DcX2PRGw ==</i0:WebUser>"+
                      "<i0:WebPassword>/d8zOcR9K9xqpl8CdhUJrw==</i0:WebPassword>"+
                   "</i0:dcSecurity>"+
                "</i0:GetAccountBalance>"}
                try{
                var response = await (result[descripcion.metodos[8]+"Async"])(body)
                }catch (e){
                    console.log(e.response)
                }
            }

                }
            })

我找到了。我有两个问题,在创建客户端服务时,默认端点设置错误并且需要 Content-Type application/soap+xml;字符集=utf-8。我只是覆盖了端点,请求成功了!!

这是我修复错误的方法。首先转到 Headers:然后,如果您可以在现场更改默认的 content-type 值,从 application/xml 到 text/xml,请先尝试对其进行编辑。如果不取消选中 content-type 复选框,并在底部的同一列中,只需键入 content-type 键和 text/xml 值。然后就完美了!!!

对我来说,

  1. 我去了headers,deselect了原来的Content-type
  2. 然后转到预设,点击管理预设
  3. 在那里,我点击了添加,然后在弹出窗口中
    一种。选择一个 Header 预设名称(任何名称都可以)
    b.对于密钥——输入 Content-type
    C。对于值——输入 text/xml
    d.最后点击右下角添加
  4. 关闭管理预设弹出窗口
  5. 单击您的新预设,然后 select 底部的新 Content-type