zoukankan      html  css  js  c++  java
  • WebClient.DownLoadString报错:连接被意外关闭

    调用WebClient的DownLoadString方法调用接口,当数据量比较小的时候(十几条数据)一切正常。后来对方突然放了一千多条数据,然后就报错了:连接被意外关闭。

    先是以为是对方接口没有在输出完毕就关闭了连接对象,经过排查否定此种可能。通过HttpWebRequest调用,然后循环读取字节流,不报错,但是读取不完整。

    最后修改为这种方式才解决:

    public string GetManyData(string url)
    {
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.ContentType = "application/json";
    request.Accept = "application/json,text/javascript,*/*,q=0.01";
    request.Headers.Add("Accept-Encoding", "deflate,gzip");
    request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip | DecompressionMethods.None;

    using (Stream stream =request.GetResponse().GetResponseStream())
    {
    StreamReader sr = new StreamReader(stream);
    return sr.ReadToEnd();
    }
    }

    还没有仔细研究内中原因。有可能是字符串的二进制安全导致读取不完整,而WebClient内部又没有处理好这个问题。

  • 相关阅读:
    js中盒子模型常用的属性你还记得几个?
    编写一个关于浏览器盒子模型的方法
    Javascript中关于作用域和闭包和域解释的面试题
    时间格式转换
    HDU Subset sequence
    bugku never give up
    HDU 2136 Largest prime factor
    HDU 2099 整除的尾数
    杭电acm 2070
    ACM Elevator
  • 原文地址:https://www.cnblogs.com/brainthink/p/7193112.html
Copyright © 2011-2022 走看看