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内部又没有处理好这个问题。

  • 相关阅读:
    阿里云服务器 API 的使用
    CMDB 资产管理
    Django uwsgi+nginx+django 部署上线
    Django Middleware 中间件
    Django Form 表单
    Django FBV and CBV
    Django cookie and session
    Django 分页器
    Django ORM
    CodeVS 1008 选数(DFS)
  • 原文地址:https://www.cnblogs.com/brainthink/p/7193112.html
Copyright © 2011-2022 走看看