当前位置: 首页 > 知识库问答 >
问题:

C#HttpClient协议ViolationException[重复]

祁正浩
2023-03-14

对于一个项目,我必须使用一个使用GET动词的API,它必须需要“content-type”属性,但这不是标准的,我希望将该属性设置为“application/json”。

我使用的是C#HttpClient,在整个宇宙中寻找之后,我找不到一种方法来实现它。我总是有个“ProtocolViolationException”,显然...

我在用这个代码

public async Task<HttpResponseMessage> GetAsync(string uri, double timeout = 0, string token = null)
    {
        using(var handler = new HttpClientHandler())
        {
            if(handler.SupportsAutomaticDecompression)
            {
                handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            }

            using(var client = new HttpClient(handler))
            {
                var request = new HttpRequestMessage(HttpMethod.Get, uri);

                HttpResponseMessage httpResponseMessage = null;

                if(timeout > 0)
                {
                    client.Timeout = TimeSpan.FromSeconds(timeout);
                }

                if(!string.IsNullOrWhiteSpace(token))
                {
                    request.Headers.Add("authorization", token);
                }

                request.Content = new StringContent("");
                request.Content.Headers.Remove("Content-type");
                request.Content.Headers.Add("Content-type", "application/json");

                httpResponseMessage = await client.SendAsync(request);

                return httpResponseMessage;
            }
        }
    }

提前致谢:)

共有1个答案

闻梓
2023-03-14

不要在GET请求中设置Content-Type。相反,假设您希望接收一个JSON结果,设置Accept头。

 类似资料:
  • Objective-C允许定义协议,声明预期用于特定情况的方法。 协议在符合协议的类中实现。 一个简单的例子是网络处理类,它将具有一个协议,其中包含委托方法等方法,当网络URL提取操作结束,就会调用类。 协议的语法如下所示 - 关键字下的方法必须在符合协议的类中实现,并且关键字下的方法是可选的。 以下是符合协议的类的语法 - 的任何实例不仅会响应接口中特定声明的方法,而且还会为中的所需方法提供实现

  • 我们正在编写一个应用程序,它必须使用HTTPS与几个服务器通信。它需要与AWS通信(使用AWS库),还需要与我们使用TLS1.2的一些内部服务通信。 我首先将HttpClient更改为使用TLS1.2SSLContext: 并且(通过spring)将这个SchemeRegistry注入到DefaultHttpClient对象中,但是这样做会从AWS得到错误,因此我假设(我可能错了)AWS不支持TL

  • Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。 在此,我们将会讨论那些协议及哪些情形应该使用(或避免使用)他们。 本地协议 最基本的就是 本地协议(Local protocol) ,其中的远程版本库就是硬盘内的另一个目录。 这常见于团队每一个成员都对一个共享的文件系统(例如一个挂载的 NFS)拥有访问权,或

  • 协议为方法、属性、以及其他特定的任务需求或功能定义蓝图。协议可被类、结构体、或枚举类型采纳以提供所需功能的具体实现。满足了协议中需求的任意类型都叫做遵循了该协议。 除了指定遵循类型必须实现的要求外,你可以扩展一个协议以实现其中的一些需求或实现一个符合类型的可以利用的附加功能。 协议的语法 定义协议的方式与类、结构体、枚举类型非常相似: protocol SomeProtocol { //

  • 本页包含内容: 协议的语法(Protocol Syntax) 对属性的规定(Property Requirements) 对方法的规定(Method Requirements) 对突变方法的规定(Mutating Method Requirements) 对构造器的规定(Initializer Requirements) 协议类型(Protocols as Types) 委托(代理)模式(Dele

  • 本文向大家介绍Objective-C语言符合协议,包括了Objective-C语言符合协议的使用技巧和注意事项,需要的朋友参考一下 示例 以下语法表明类使用尖括号括起来的协议。 这意味着NewClass的任何实例都将响应其接口中声明的方法,但也将为的所有必需方法提供实现NewProtocol。 一个类也可以通过用逗号分隔来遵循多个协议。 就像遵循单个协议时一样,该类必须实现每个协议的每个必需方法以