Exemplo n.º 1
0
        public override void WriteTo(IBufferedSink p_sink)
        {
            // 需要另一个代理类来获取写入的长度
            ExForwardingSink forwardingSink = new ExForwardingSink(p_sink, _progressListener, ContentLength());
            // 转一下
            IBufferedSink bufferedSink = OkIO.Buffer(forwardingSink);

            // 写数据
            _body.WriteTo(bufferedSink);
            // 刷新写入
            bufferedSink.Flush();
        }
        public override void WriteTo(IBufferedSink p0)
        {
            try
            {
                IBufferedSink bufferedSink;
                countingSink = new CountingSink(this, p0);
                bufferedSink = OkIO.Buffer(countingSink);

                _body.WriteTo(bufferedSink);

                bufferedSink.Flush();
            }
            catch (Java.IO.IOException ex)
            {
                _listener?.OnError(_tag, ex.ToString());
            }
        }
Exemplo n.º 3
0
        private Response Decompress(Response response)
        {
            _logger?.LogDebug("Decompress response");
            var source = response.Headers("Content-Encoding").Contains("gzip")
                ? (ISource) new GzipSource(response.Body().Source())
                : (ISource) new InflaterSource(response.Body().Source(), new Inflater());
            var bodyString      = OkIO.Buffer(source).ReadUtf8();
            var responseBody    = ResponseBody.Create(bodyString, response.Body().ContentType());
            var strippedHeaders = response.Headers().NewBuilder()
                                  .RemoveAll("Content-Encoding")
                                  .RemoveAll("Content-Length")
                                  .Build();

            return(response.NewBuilder()
                   .Headers(strippedHeaders)
                   .Body(responseBody)
                   .Message(response.Message())
                   .Build());
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.main);

            var doThings = FindViewById <Button>(Resource.Id.doThings);

            doThings.Click += delegate
            {
                var buffer = OkIO.Buffer(new RandomSource(5));
                var bytes  = buffer.ReadByteArray(3);
                buffer.Close();

                new AlertDialog.Builder(this)
                .SetTitle("OkIO")
                .SetMessage("BYTES: " + string.Join(", ", bytes))
                .SetNeutralButton("OK", (sender, e) => ((AlertDialog)sender).Dismiss())
                .Create()
                .Show();
            };
        }