相关疑难解决方法(0)

将Http Headers添加到HttpClient

所有:

在向Web服务发送请求之前,我需要将http标头添加到HttpClient.我如何为单个请求执行此操作(而不是将HttpClient应用于所有将来的请求)?我不确定这是否可行.

var client = new HttpClient();
var task =
    client.GetAsync("http://www.someURI.com")
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api dotnet-httpclient

147
推荐指数
2
解决办法
13万
查看次数

如何在 Asp.Net Core 6 中向类型化 HttpClient 添加承载令牌身份验证

我正在尝试使用 ASP.Net Core 6 设置一个 Web api,以便用户可以到达我的端点,然后我使用特权帐户在幕后的 D365 中执行一些工作。我正在使用类型化的 HTTP 客户端,但我不确定如何插入承载身份验证,以便来自该客户端的所有请求都附加正确的授权标头。

程序.cs

builder.Services.AddHttpClient<D365Service>();
Run Code Online (Sandbox Code Playgroud)

D365Service.cs

private readonly HttpClient httpClient;

public D365Service(HttpClient httpClient)
{
  this.httpClient = httpClient;

  this.httpClient.DefaultRequestHeaders.Add("Accept", "*/*");
  this.httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
  // a whole bunch of other headers
  // Is this where I can add in the bearer Authorization header? How do I generate that token?
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。谢谢。

c# asp.net .net-core asp.net-core asp.net-core-webapi

10
推荐指数
1
解决办法
4万
查看次数

HttpRequestMessage的Content-Type标头中的奇怪行为

我试图通过C#(.NET Core 2.2.104)向主体中的外部Web服务发出带有application / json的HTTP POST请求。

我已经阅读了SO中的所有类似问题,并编写了以下代码:

            SignXmlRequestDto requestBody = new SignXmlRequestDto(p12, model.SignCertPin, model.Data);
            string json = JsonConvert.SerializeObject(requestBody);

            var httpRequestMessage = new HttpRequestMessage
            {
                Method = HttpMethod.Post,
                RequestUri = ncanNodeUrl,
                Headers =
            {
                { HttpRequestHeader.ContentType.ToString(), "application/json" }
            },
                Content = new StringContent(JsonConvert.SerializeObject(json))
            };

            var response = await httpClient.SendAsync(httpRequestMessage);

            string responseString = await response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)

我从服务中收到一个错误,它说:“无效的标头Content-Type。请将Content-Type设置为application / json”。在这里有趣的是,如果我模拟了来自Postman的请求,那么一切正常,我得到了成功的响应。在此处输入图片说明

更新:按照@KristófTóth的建议,我将代码修改为:

            var httpRequestMessage = new HttpRequestMessage
            {
                Method = HttpMethod.Post,
                RequestUri = ncanNodeUrl,
                Content = new StringContent(json, Encoding.UTF8, "application/json")
            };

            var response …
Run Code Online (Sandbox Code Playgroud)

.net c# http postman

1
推荐指数
1
解决办法
66
查看次数