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生成代理类方法

     



  • 相关阅读:
    ASP.NET 分页数据源:: PagedDataSource //可分页数据源
    strtok
    FloydWarshall算法详解(转)
    Tom Clancy's Splinter Cell: Double Agent
    暴雪COO确认:星际争霸2.0要来了
    wxWidgets 2.8.0 released
    如饥似渴
    大乘法器遇见小乘法器
    GLEW 1.3.5 adds OpenGL 2.1 and NVIDIA G80 extensions
    DevIL真是好用得想哭
  • 原文地址:https://www.cnblogs.com/townsend/p/7773807.html
Copyright © 2011-2022 走看看