Вопрос по restsharp, .net, rest – RestSharp сжимает запрос во время вызова покоя на сервер

2

Я использую API для отдыха, написанный на Java в моем клиенте C #. Я перекачивал огромное количество данных на сервер и использовал RestSharp.dll с целью сделать остальные вызовы. Что я сделаю, так это создаю объект и добавляю его непосредственно в тело объекта запроса RestSharp и упоминаю .netserializer для него. Таким образом, он будет автоматически сериализовать его и опубликовать. Все отлично работает.

Теперь мне нужно применить сжатие LZO или GZIP. Так что этот сервер будет иметь меньшую нагрузку.

Я знаю, как реализовать оба метода сжатия. Но как реализовать это с помощью объекта запроса RestSharp?

Что я должен сделать Я добавляю объект в тело запроса. Когда выполнять сжатие?

Любая помощь...

Спасибо

Возможный дубликатPosting GZip content using RestSharp Akira Yamamoto
Я использую RestSharp. Данные, которые я посылаю, огромны. Так что я даже иногда делаю 2X сжатие. sunder
Мы должны установить это свойство, я думаю. Это не автоматически. Во всяком случае, нормальное сжатие не будет работать в моем случае. Я должен сжать его с помощью Gzip или LZO. sunder
Зачем вообще это реализовывать? Сжатие HTTP обычно обрабатывается сервером и клиентом. Вам не нужно реализовывать это самостоятельно. HTTP-сжатие является функцией IIS и может управляться на клиенте с помощью свойства HttpWebRequest.AutomaticDecompression. Panagiotis Kanavos

Ваш Ответ

1   ответ
3

поддерживает сжатие HTTP с версии 102.7. Я не уверен, что это работает только для Windows Phone или сжатие поддерживается для всех платформ.

Наиболее распространенными алгоритмами являются GZip и Deflate, хотя фактический уровень сжатия обычно контролируется сервером.

UPDATE:

Я только что проверил, используяобманщик что HTTP-сжатие включено по умолчанию в 103.1. Следующий код возвращает страницу, закодированную с помощью GZip:

        var target = "http://msdn.microsoft.com/";
        var client=new RestClient(target);
        var request = new RestRequest("",Method.GET);
        var response = client.Execute(request);
        Console.WriteLine(response.Content);

Нет необходимости добавлять заголовок Accept-Encoding.

Сжатие будет работать, только если сервер его поддерживает. В противном случае ответ будет несжатым.

Это означает, что сервис Java должен будет также включить сжатие HTTP.

Если ответ сжат, заголовок Content-Encoding будет установлен на метод сжатия, например.gzip.

Чтобы проверить это визуально, откройте Fiddler и проверьте ответ на RestRequest. На вкладке Transformer панели Response отображаются параметры сжатия.

хорошо ... если мы добавим этот запрос .AddHeader (& quot; Accept-Encoding & quot ;, & quot; gzip & quot;) в объекте запроса и после отправки на сервер будет фактически сжимать объект с помощью GZip. Хорошо, после прочтения вашей ссылки, я думаю, что это сжимать. sunder
Я этого не знал! Спасибо за информацию. Итак, если наш API требует от пользователя столько передачи данных, что желательно сжатие запроса, все стороны должны, по-видимому, реализовать его самостоятельно? По вашему мнению, наиболее правильно сделать, чтобы установить & quot; Content-Type & quot; как & quot; application / json & quot; и установите & quot; Content-Encoding & quot; на "gzip" (и затем закодируйте его сами) - или мы должны установить & quot; Content-Type & quot; сам по себе "application / gzip" избежать помех? (или какой-либо другой заголовок, такой как «Transfer-Encoding»)?
Я включил его и его публикацию данных успешно после добавления этого в качестве заголовка. Но теперь, как я могу проверить, что это действительно сжимает вещи и отправляет на сервер. sunder
@Alain HTTP поддерживает только сжатыйresponses, Сжатые запросы являются частью HTTP / 2, я думаю. Ни одна библиотека не может предоставить то, что не доступно в протоколе.
Старый вопрос, но я чувствую, что этот ответ только утверждает, что RestSharp поддерживает автоматическиrecieving сжатые кодировки. Вопрос, безусловно, оsending GZIP-кодированные данные (автоматически). Я могу подтвердить, что даже если я добавлю"Content-Encoding", "gzip" заголовок к моемуrequest объект RestSharp игнорирует его и кодирует тело запроса как UTF8. При отправке больших тел запросов было бы здорово, если бы они могли автоматически сжимать сериализованные данные в «gzip». по требованию. Эта возможность где-нибудь скрыта в RestSharp?

Похожие вопросы