簡體   English   中英

如何使用HttpClient在(HTTP GET)Rest請求頭集合中添加'Content-Type'頭?

[英]how to add 'Content-Type' header in (HTTP GET) Rest request header collection using HttpClient?

我正在使用HttpClient進行休息服務。 當我嘗試在“Get”請求標頭中添加“Content-Type”時,我有一個問題。

我知道“Content-Type”適用於請求正文部分發送的內容但是我需要發送帶有請求標題部分的“Content-Type”。

我還嘗試從HttpRequestHeaders的 Invalid Header列表中刪除“Content-Type”標頭

我找到鏈接如何為HttpClient請求設置Content-Type標頭?

        Dim field = GetType(System.Net.Http.Headers.HttpRequestHeaders).GetField("invalidHeaders", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.[Static])

        If field IsNot Nothing Then
            Dim invalidFields = DirectCast(field.GetValue(Nothing), HashSet(Of String))
            invalidFields.Remove("Content-Type")
        End If

但我的問題沒有解決,我有例外

的InnerException:

Message =必須使用適當的 屬性或方法 修改“content-type”標頭

   StackTrace:
        at System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
        at System.Net.WebHeaderCollection.Add(String name, String value)
        at System.Net.Http.HttpClientHandler.SetRequestHeaders(HttpWebRequest webRequest, HttpRequestMessage request)
        at System.Net.Http.HttpClientHandler.CreateAndPrepareWebRequest(HttpRequestMessage request)
        at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   InnerException:

我發現像Postman或SoupUI這樣的工具允許這樣做。

請幫我找一些解決方案。

謝謝

HttpWebRequest可能會幫您解決問題。

private static string CallService(string url)
{
    WebRequest req = WebRequest.Create(url);
    req.Method = "GET";
    String json;
    req.ContentType = "application/json; charset=utf-8";
    var resp = req.GetResponse();
    using (varstream = resp.GetResponseStream())
    {
        var re = new StreamReader(stream);

            json = re.ReadToEnd();
        }

        return json; 
    }
}

可以從獲取異步HttpWebRequest的響應中找到異步實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM