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"));

  • 相关阅读:
    safari调试iphone
    git 本地仓库关联远程仓库
    video 自动播放及循环播放问题
    webpack4系列之【3. webpack4优化记录】
    展示博客
    第三天冲刺
    第二天冲刺
    第一天冲刺
    UML设计
    Alpha项目冲刺
  • 原文地址:https://www.cnblogs.com/cphmvp/p/4145997.html
Copyright © 2011-2022 走看看