• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Http请求长时间等待无结果返回解决办法

    Http请求长时间等待无结果返回解决办法

    今天遇到一个奇葩的问题,这个程序主要是用于调用接口搜集数据的,但是,发生了不好的事情就是服务器中启动的进程非常多,一直无法结束,没办法只能采用kill的方法,将所有的这部分进程杀掉。

    分析了下程序,写了个测试,本地跑依旧长时间等待,无法运行,也不抛出异常,最后发现问题在于发送请求的部分,一直在等待对方服务器响应,由于采用的是keep-alive方式的连接,这里没有采用超时的方式,以至于程序会长时间等待下去。

    经过测试发现开启进程过多在于没有设置超时,希望读者注意这部分,否则,容易出现笔者遇到的这种问题。最终的问题应该是接口提供方的异常导致。

    public static String sendPost(String url, String param) {
          PrintWriter out = null;
          BufferedReader in = null;
          String result = "";
          try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setConnectTimeout(4000);
            conn.setReadTimeout(4000);
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
              result += line;
            }
          } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!");
            //e.printStackTrace();
          }
          //使用finally块来关闭输出流、输入流
          finally{
            try{
              if(out!=null){
                out.close();
              }
              if(in!=null){
                in.close();
              }
            }
            catch(IOException ex){
              //ex.printStackTrace();
            }
          }
          return result;
        }
    
    

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    您可能感兴趣的文章:
    • Node.js发送HTTP客户端请求并显示响应结果的方法示例
    • 模拟HTTP请求实现网页自动操作及数据采集的方法
    • java 中http请求为了防止乱码解决方案
    • Java使用HttpClient实现Post请求实例
    • 微信小程序 http请求封装详解及实例代码
    • Angular的$http的ajax的请求操作(推荐)
    • 完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
    上一篇:SpringMVC 数据绑定实例详解
    下一篇:JSP 中Spring Bean 的作用域详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Http请求长时间等待无结果返回解决办法 Http,请求,长时间,等待,无结果,