解决方案 »

  1.   

    用这个方法试试:
    /**
     * 根据url调用web接口
     * 
     * @param url
     *            访问地址, 必备参数
     * @param method
     *            请求方式post还是get, 默认get
     * @param params
     *            参数列表 post必备, 比如:"name=张三&age=18"
     * @param sessionInfo
     *            可以保持session, 默认不保持
     * @param encoding
     *            编码格式, 默认UTF_8
     * @param isLine
     *            得到的源码是否换行, 默认false
     * @return String
     */
    public static String requestUrl(String url, String method, String params, String sessionInfo, String encoding,
    boolean isLine) {
    try {
    encoding = (ToolUtil.isBlank(encoding) ? CharEncoding.UTF_8 : encoding);
    method = (ToolUtil.isBlank(method) ? Constant.REQUEST_GET : method.toUpperCase());
    String mathStr = "mathRandom=" + Math.random();
    if (method.equals(Constant.REQUEST_GET)) {
    url += (url.indexOf("?") != -1 ? "&" : "?") + mathStr;
    if (!ToolUtil.isBlank(params)) {
    url += "&" + params;
    }
    }
    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
    if (!ToolUtil.isBlank(sessionInfo)) {
    connection.setRequestProperty("Cookie", sessionInfo);
    }
    connection.setRequestMethod(method);
    connection.setConnectTimeout(15000);
    connection.setReadTimeout(15000);
    if (method.equals(Constant.REQUEST_POST)) {
    connection.setDoOutput(true);
    params = (ToolUtil.isBlank(params) ? mathStr : params + "&" + mathStr);
    OutputStream output = connection.getOutputStream();
    output.write(params.getBytes(encoding));
    output.flush();
    output.close();
    }
    String result = FileUtil.readFile(connection.getInputStream(), encoding, 1, isLine);
    connection.disconnect();
    return result;
    } catch (Exception e) {
    log.error("根据url调用web接口", e);
    throw new MvcException(e.getMessage());
    }
    }
      

  2.   

    如果是这里的话那就是这个被catch住了
      

  3.   

    这里catch报null错误?不是 ,我换成每一个都try catch后UrlCon.connect()这里的堆栈信息没有打印出来,倒是进入while循环的时候报的null错误
      

  4.   

    这里catch报null错误?不是 ,我换成每一个都try catch后UrlCon.connect()这里的堆栈信息没有打印出来,倒是进入while循环的时候报的null错误你好好检查一下那个url吧,你这根本不是Null的错误,而是超时。  buffer根本就没创建出来,finally代码块里去close肯定是null啊