«Клонирование» HttpResponseMessage в HttpResponse - PullRequest
0 голосов
/ 16 февраля 2019

Для проекта мне нужно создать «прокси» для стороннего API, потому что части API должны быть заблокированы для внешней стороны.Теперь я могу использовать HttpClient для получения информации из API, но мне нужно отправить информацию обратно, используя HttpResponse.Для многих я могу отправить информацию обратно, но иногда информация отправляется обратно в формате gzip или в двоичном виде.Я пытаюсь скопировать все заголовки из HttpResponseMessage в HttpResponse, но у меня ничего не получается.Кто-нибудь делал что-то подобное?

    public static void AddHeaders(HttpResponse httpResponse, System.Net.Http.HttpResponseMessage httpResponseMessage)
    {
        httpResponse.CacheControl = httpResponseMessage.Headers.CacheControl.ToString();

        foreach (KeyValuePair<string, System.Collections.Generic.IEnumerable<string>> item in httpResponseMessage.Headers)
        {
            AddHeaders(httpResponse, item);
        }

        foreach (KeyValuePair<string, System.Collections.Generic.IEnumerable<string>> item in httpResponseMessage.Content.Headers)
        {
            AddHeaders(httpResponse, item);
        }
    }

    public static void AddHeaders(HttpResponse httpResponse, KeyValuePair<string, System.Collections.Generic.IEnumerable<string>> keyValuePair)
    {
        string key = keyValuePair.Key;
        string values = "";
        foreach (string stringValue in keyValuePair.Value)
        {
            values += "," + stringValue;
            values = values.Trim(',');
        }
        switch (key)
        {
            case "Content-Type":
                httpResponse.ContentType = values;
                break;
            default:
                httpResponse.Headers.Add(key, values);
                break;
        }
    }
...