• httppost body的实现, 和body是gb2312等编码的实现


    使用的是http4.X 版本,里面推荐使用的post是key value的形式

    List<NameValuePair> formparams = new ArrayList<NameValuePair>();
    for (String key : params.keySet()) {
    formparams.add(new BasicNameValuePair(key, new String(params.get(key).getBytes(),"gb2312")));
    }
    he = new UrlEncodedFormEntity(formparams, "gb2312");
    post.setEntity(he);


    但是即使这样转换了之后,发现我要是  key=北京 的话,发出去的北京还是错误的编码的,用wireshark的编码器看出来和GB2312的不一样。 具体的原因没有去根本上追究,感觉应该是URLEncoding自动先转为%...%这样字符的,再把这个转为gb2312,那样打不到我们想要的Gb2312的效果。 

    解决方案, 直接先把String转为String之后,使用post设置的body发送出去。 先重组paras,拼接为string,然后再转为gb2312,最后发送出去

    StringBuffer sb = new StringBuffer();
    if (params != null) {
    for (Entry<String, String> e : params.entrySet()) {
    sb.append(e.getKey());
    sb.append("=");
    sb.append(e.getValue());
    sb.append("&");
    }
    sb.substring(0, sb.length() - 1);
    }

    post.setEntity(new StringEntity(sb.toString(),"","gb2312"));

  • 相关阅读:
    如何做竞品分析报告
    软件架构入门
    系统内部矛盾的解决思路
    分表分库一
    Hbase随笔2
    Hbase随笔
    vertica在电信的应用
    理解RESTful架构
    百分点刘译璟
    数据产品的简介
  • 原文地址:https://www.cnblogs.com/cphmvp/p/4145997.html
Copyright © 2020-2023  润新知