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

HttpClient请求的自定义头

伯俊弼
2023-03-14

如何将自定义标头添加到HttpClient请求?我使用PostAsJsonAsync方法发布JSON。我需要添加的自定义标题是

"X-Version: 1"

这是我到目前为止所做的:

using (var client = new HttpClient()) {
    client.BaseAddress = new Uri("https://api.clickatell.com/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xxxxxxxxxxxxxxxxxxxx");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = client.PostAsJsonAsync("rest/message", svm).Result;
}

共有3个答案

万俟招
2023-03-14
var request = new HttpRequestMessage {
    RequestUri = new Uri("[your request url string]"),
    Method = HttpMethod.Post,
    Headers = {
        { "X-Version", "1" } // HERE IS HOW TO ADD HEADERS,
        { HttpRequestHeader.Authorization.ToString(), "[your authorization token]" },
        { HttpRequestHeader.ContentType.ToString(), "multipart/mixed" },//use this content type if you want to send more than one content type
    },
    Content = new MultipartContent { // Just example of request sending multipart request
        new ObjectContent<[YOUR JSON OBJECT TYPE]>(
            new [YOUR JSON OBJECT TYPE INSTANCE](...){...}, 
            new JsonMediaTypeFormatter(), 
            "application/json"), // this will add 'Content-Type' header for the first part of request
        new ByteArrayContent([BINARY DATA]) {
            Headers = { // this will add headers for the second part of request
                { "Content-Type", "application/Executable" },
                { "Content-Disposition", "form-data; filename=\"test.pdf\"" },
            },
        },
    },
};
杨曜瑞
2023-03-14

以下是Anubis基于此的回答(这是一个更好的方法,因为它不会修改每个请求的标头),但它更等同于原始问题中的代码:

using Newtonsoft.Json;
...

var client = new HttpClient();
var httpRequestMessage = new HttpRequestMessage
    {
        Method = HttpMethod.Post,
        RequestUri = new Uri("https://api.clickatell.com/rest/message"),
        Headers = { 
            { HttpRequestHeader.Authorization.ToString(), "Bearer xxxxxxxxxxxxxxxxxxx" },
            { HttpRequestHeader.Accept.ToString(), "application/json" },
            { "X-Version", "1" }
        },
        Content = new StringContent(JsonConvert.SerializeObject(svm))
    };

var response = client.SendAsync(httpRequestMessage).Result;
宋奇希
2023-03-14

我已经找到了我问题的答案。

client.DefaultRequestHeaders.Add("X-Version","1");

这应该添加一个自定义标头到您的请求

 类似资料:
  • 主要内容:Maven依赖关系,自定义HTTP头示例HTTP消息可以包含许多描述消息属性的标头,例如内容长度,内容类型,授权等。 HttpClient提供了检索,添加,删除和枚举标头的方法。 在下面的教程中,我们将演示如何将自定义HTTP头添加到HttpClient和Http请求方法。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache HttpClient 4.5版本。 将以下依赖项添加到您的项目中。 pom.xml 文件的

  • 问题内容: 我正在使用.NET的HttpClient向WebAPI发出请求,该WebAPI返回一些JSON数据,该数据需要在客户端进行一些自定义反序列化。为此,我已经完成了自己的工作,但是我不知道如何让该方法处理转换器的存在。 通过使用读取响应,然后将该字符串传递给,我已经解决了我的问题,但是似乎应该有一个更优雅的解决方案。 这是我的代码: 这是我所能做到的最好的,还是有一些更优雅的方法? 如果需

  • 问题内容: 我想知道是否可以通过添加自定义信息来配置所有$ http请求标头。像config这样的东西: 但是对于所有$ http呼叫,我将使用不同的服务。我敢肯定有一个解决方案:D。谢谢 问题答案: 您可以创建一个拦截器来扩展标题:

  • 我需要发送一个GET请求,标题是:。我期待服务器的XML响应。我用邮递员测试了请求和响应,一切都很好。但是,当我尝试在Spring中使用执行此操作时,我总是会收到400个错误请求。的异常是: 我的代码: 调试消息将标头显示为,这似乎是正确的。我想知道我的请求出了什么问题,以及是否有一种方法可以看到在线调试的请求。

  • 我通过endpoint与我的laravel服务器通话。我不使用Laravel View,因此无法访问其会话。 当一个需要的请求进来,我需要返回一个响应即etc每个参数?可能吗? 内部: 如果我应该使用字符串消息,而不是laravel重定向没有响应,我使用邮递员,我看到状态200。如何实现我想要的?我想用响应自定义每个必需的参数。

  • 我正在使用HttpClient发送请求,我想在GET方法中使用HttpClient使用我的自定义请求头? 下面是我的代码: