zoukankan      html  css  js  c++  java
  • Webservice报错客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”。

    控制台对接Webservice正常,同样的方法在Web项目上报错:

    客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”。
    请求失败,错误信息为:
    --
    {
     "code" : "03010250002",
     "msg" : "Illegal json string",
     "data" : ""
    }
    --.

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.InvalidOperationException: 客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”。
    请求失败,错误信息为:
    --
    {
     "code" : "03010250002",
     "msg" : "Illegal json string",
     "data" : ""
    }
    --.

    按照网上的资料找到的方法:

    1、重写代理类的请求或响应的方法

     在代理类中重写GetWebResponse方法来设置响应的ContentType:

            protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest request)
            {
                var response = base.GetWebResponse(request);
                if (response.ContentType == "application/json;charset=UTF-8")
                    response.ContentType = "text/xml";
                return response;
            }
            
            protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest request, IAsyncResult result)
            {
                var response = base.GetWebResponse(request,result);
                if (response.ContentType == "application/json;charset=UTF-8")
                    response.ContentType = "text/xml";
                return response;
            }

    调试报错:

    该类未实现此属性。

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.NotImplementedException: 该类未实现此属性。

    源错误: 

    行 39:             var response = base.GetWebResponse(request);
    行 40:             if (response.ContentType == "application/json;charset=UTF-8")
    行 41:                 response.ContentType = "text/xml";
    行 42:             return response;
    行 43:         }

    重写请求方法GetWebResponse

            protected override System.Net.WebRequest GetWebRequest(Uri uri)
            {
                System.Net.WebRequest request = base.GetWebRequest(uri);
                request.ContentType = "text/xml";
                return request;
            }

    结果还是报错:客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”。

    后来调试发现是URL写错了,因是用vs的开发命令工具生成的代理类,手动设置的URL,设置错误导致。

    SOAPUI生成的代理类也一样要注意URL,URL对了就正常了。

    顺便附上用vs的开发命令工具生成代理类的方法,其实就是调用了wsdl.exe 生成代理类

    打开vs开发控制台

    wsdl /language:c# /n:命名空间 /out:D:/SOAPUI_CS/类名.cs wsdl文件地址

    SoapUI生成代理类方法

     



  • 相关阅读:
    OSI安全体系结构
    PHP 二维数组根据相同的值进行合并
    Java实现 LeetCode 17 电话号码的字母组合
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 14 最长公共前缀
  • 原文地址:https://www.cnblogs.com/townsend/p/7773807.html
Copyright © 2011-2022 走看看