起因:

前几天遇到的问题,才有时间记录,需求:本地生成xml形式的字符串以参数形式用post方法传送到对方的固定接口;

这个需求写的时候感觉很容易,本地测试的时候,也觉得很简单就过了,然后和对方联调的时候,稀里哗啦调了N久,

中间对方换了人接手,稀里哗啦又调了N久,对方改代码,稀里哗啦又又调了N久,最后上线了,发现接口对不上,,,

经过:

问题最开始只是乱码问题,无非就是UTF-8和GBK之间的转换,我们这边统一的UTF-8的编码,对方是GBK。对面改为

了UTF-8,联调以正确结束;然后对面换人改代码,说要GBK的,我们发了UTF-8的,他们能解析,然后说头部编码格式

要改为GBK,好奇他们居然可以解析的情况下,应要求做出了一个挺low的决定,替换字符串,将UTF-8换为GBK。【其实

这的时候就有点歪了,以至于后面调的比较吃力,当时应该和对方反复确认一下的】。说是没问题,那就上线了,,,,

然后13call,说乱码又出现了,,,

前辈们得知有问题后,第一时间支援,开始分析,才发现,最开始的测试是错的,我用eclipse启动tomcat服务器,这时候用

的是eclipse的编码模式,应该生成war包放在tomcat下启动才能模拟真实的环境,然后我们在不修改环境的情况下各种尝试

编码转换,然后对方说收到了不是乱码的数据,天真的我以为就可以收尾了

对方马上提出,收不到参数的那个字段,这里面用的HttpClient的post方法发送,如下↓

CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost("URL");
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(参数);
UrlEncodedFormEntity uefEntity;
uefEntity = new UrlEncodedFormEntity(formparams, "GBK");
post.setEntity(uefEntity);
HttpResponse response2 = client.execute(post);

debug的时候post之前,参数都是有值的,一到post就为null了,浓浓的诡异感飘然而起,前辈当机立断,换方法

我们换用了HttpURLConnection方法,如下↓

URL postUrl = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
String content = "参数=" + URLEncoder.encode(参数, "GBK");
out.writeBytes(content);

收尾了。。。。。

总结:

前辈说,HttpURLConnection是基本的方法,HttpClient是基于HttpURLConnection的封装,基于“简单的问题用

复杂的方法,复杂的的问题用简单的方法”原理,我们回归原始,,,,

为前辈的机智点赞,记住--生成war包放在tomcat下启动来模拟真实的环境,好奇为什么定接口的时候不用json,以后

我商讨的方案,力争用json,后期好保养,

java后台开发传输乱码&&接口post传参失败的更多相关文章

  1. 【分享】Java后台开发精选知识图谱

    地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...

  2. Java后台开发精选知识图谱

    1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习方 ...

  3. # & 等特殊字符会导致传参失败

    # & 等特殊字符会导致 post 传参失败 处理方法使用 encodeURIComponent 将字符串转化一下 实例 // toUpperCase() 转化为大写字母 var cateco ...

  4. 携程Java后台开发三面面经

    前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...

  5. 前端nginx+Java后台ftp处理页面图片上传踩坑

    今天,将前端代码部署到服务器nginx上,在测试多图片上传时,报错413请求体空间太大,请求都没到后台,直接被nginx拦截,调整后又报错504. 整体而言,前端存在两处问题: 413 错误 :Req ...

  6. encodeURIComponent编码java后台解码出现乱码问题

    问题:JavaScript请求后台带着name参数,有中文进行编码:url?name=" + encodeURIComponent(name):java后台直接使用name或者name=ja ...

  7. java与js交互,相互调用传参

    随着前端技术的发展与H5的广泛使用,移动端采用native+h5的方式越来越多了,对于Android来说就涉及到java与js的交互,相互调用传参等.下面就来看一下java与js交互的简单demo. ...

  8. Java中的new关键字和引用传参

    先看看Java中如何使用new关键字创建一个对象的. [java] view plain copy public class Student { public String name; public  ...

  9. js 调用接口并传参

    注:需先引入 jquery.json-xx.min.js 1. 参数跟在url后面 var name = '王一'; var age = 18; $.ajax({ type : 'get', url ...

随机推荐

  1. C# 或 Asp.net 2.0 邮件发送模块(亲测)

    using System.Net.Mail;using System.Net; public class Mail    {        MailMessage mm;        SmtpCli ...

  2. zabbix3.0.4监控mysql主从同步

    zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...

  3. memory allocation

    1 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符. 2,malloc, 必须 包含头文件<stdlib.h> 3, nt* p_scalar = ...

  4. C# 中的IOCP线程池

    原文地址:http://www.theukwebdesigncompany.com/articles/iocp-thread-pooling.php PartOne : Introduction 当使 ...

  5. js中数组

  6. webform注册和Repeater

    一.注册1.日期(1)年月日用三DropDownList个,分别循环写入数字 代码写在后台  Page_Load中的代码 if (IsPostBack == false) { //年绑定数据 ; i- ...

  7. Android菜鸟成长记3-activity类

    Activity 一.什么是activity Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能.它是 android 应用程序的基本功能单元.Activity 本身是没有界面 ...

  8. 理解node模块的exports和module.exports

    exports是module.exports的引用,即var exports = module.exports.在一个模块的开头,这两个值都指向同一个空对象:exports = module.expo ...

  9. 我为什么选择使用Go语言?

    谢孟军:EGO会员.GopherChina组织者.<Go Web编程>一书的作者,专注Golang技术架构.本文来自EGO会员群分享,入群方式见文末 在这里我主要想和大家分享一些Go和我个 ...

  10. 技术英文单词贴--D

    D detail 细节,详情 deploy 配置,部署