你那转换的地方根本没用。reault这个字符串里已经是乱码了,你转那么俩次跟没转一样,在流那块弄下试试

解决方案 »

  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());
    }
    }

    public static void main(String[] args) {
                    Date date = new Date();
    System.out.println(requestUrl("http://hq.sinajs.cn/list=sh601006 ", "GET", null, null, "GBK", false));
                    System.out.println("本次调用web接口耗时" + (new Date().getTime() - date.getTime()) + "毫秒");
    }输出结果:var hq_str_sh601006="大秦铁路,6.72,6.71,6.71,6.79,6.69,6.71,6.72,12584684,84810589,9700,6.71,165890,6.70,112400,6.69,129200,6.68,96400,6.67,137527,6.72,89100,6.73,205072,6.74,139592,6.75,582303,6.76,2014-05-22,15:04:39,00";
    本次调用web接口耗时109毫秒
    没有乱码
      

  2.   


    就是不会弄啊,大神指教指教啊
    String result = EntityUtils.toString(httpEntity, "utf-8");    不用getContent那些步骤就可以获取,至于流里那块来转码还不是很清楚
      

  3.   


    就是不会弄啊,大神指教指教啊

    我日,弄错了,你这根本就不是utf-8,而是GBK! 你把这块加上编码就可以了BufferedReader reader = new BufferedReader(new InputStreamReader(is, "gbk"));
      

  4.   

    客户端转换时使用的字符编码要和服务器端的字符编码一致,一般选UTF-8
      

  5.   

    自定httpclient的时候可以设置编码规则