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

时间:2019-11-29 18:22:32

标签: javascript node.js api soap wsdl

我已经使用消耗wsdl项目的“ soap”库在nodejs中构建了api。

我正在尝试发布帖子,并且在响应正文中出现此错误:服务器无法处理请求,因为不支持媒体类型;同样在响应正文中,我有以下消息:由于内容类型为'text / xml,因此无法处理该消息; charset = utf-8'不是预期的类型'application / soap + xml; charset = utf-8 。我做了一些研究,发现这是服务器和客户端之间的肥皂版本问题。

我尝试这种事情:

  1. 在创建肥皂客户端时添加了 forceSoap12Headers:false 和反之亦然
  2. 将具有以下内容和内容类型的肥皂库重写为: text / xml; charset = utf-8 ,还更改了属于soap v1.1的所有方案
  3. 尝试在请求'接受''文本/ xml'
  4. 中添加 httpHeader

这是我的代码的一部分:

 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)
                }
            }

                }
            })

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这就是我要解决的错误的原因。首先转到标题:然后,如果可以在现场将默认内容类型值从application / xml更改为text / xml,请尝试首先对其进行编辑。如果没有,请取消选中content-type复选框,并在底部的同一列中,键入Key的content-type和值的text / xml。然后它可以完美地工作!

答案 2 :(得分:0)

对我来说,

  1. 我转到标题,取消选择了原始的Content-type
  2. 然后转到预设,单击“管理预设”
  3. 在这里,我单击“添加”,然后在弹出窗口中
    一种。选择标题预设名称(任何方法都可以使用)
    b。对于密钥-输入内容类型
    C。价值-输入text / xml
    d。最后点击右下角的添加
  4. 关闭管理预设弹出窗口
  5. 单击新的预设,然后在底部选择新的内容类型
相关问题