zoukankan      html  css  js  c++  java
  • 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"));

  • 相关阅读:
    写一写这几天安卓开发遇到的坑
    安卓环境搭建
    正则表达式
    一段时间的总结
    路飞-登录页面
    路飞-腾讯云短信接口
    路飞-Redis
    路飞-git操作
    路飞-后台xadmin配置
    路飞-后台处理跨域问题
  • 原文地址:https://www.cnblogs.com/cphmvp/p/4145997.html
Copyright © 2011-2022 走看看