起因:

前几天遇到的问题,才有时间记录,需求:本地生成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. CPU阿甘

    本系列文章全部摘选自"码农翻身"公众号,仅供个人学习和分享之用.文章会给出原文的链接地址,希望不会涉及到版权问题. 个人感言:真正的知识是深入浅出的,码农翻身" 公共号将 ...

  2. 【转】提高VR渲染速度的关键

    提高VR渲染速度的关键,这个教程比以往的教程都要重要很多,如果你是刚刚步入学习和上升阶段那么这将是你必须要看的东西,他会让你迅速提升技能达到比你死看书本好很多的效果,不多说上教程   VR的基本渲染方 ...

  3. jsp request 对象详解

    转自:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 1.request对象 客户端的请求信息被封装在request对象中 ...

  4. java学习第四天

    那些逻辑语言就基本了解下,今天想到了一个问题就是关于for和while的区别,从专业上来说,for和while基本上是相同的,但是for是只允许一次访问的,如果结束后就无法继续访问,而while则可以 ...

  5. iframe的用法

    iframe 元素会创建包含另外一个文档的内联框架(即行内框架). 属性: 创建内联框架(JSP页面) <%@ page language="java" import=&qu ...

  6. css的一种预处理器 sass

    之前觉得关于css什么的没什么,后来让别人给问住了...然后就悲催了... sass是一种css的预处理器,是一种函数式的css的编程: 主要还是看官网 http://www.w3cplus.com/ ...

  7. Centos7 禁止firewalld并使用iptables 作默认防火墙以及忘记root密码的处理方法

    一.停止并禁用firewalld [root@test ~]# systemctl stop firewalld [root@test ~]# systemctl disable firewalld ...

  8. {Reship}{C#}{GDI+}GDI+画笔,线,区域类型

    =================================================================================== This article is ...

  9. [纯小白学习OpenCV系列]官方例程00:世界观与方法论

    2015-11-11 ----------------------------------------------------------------------------------- 其实,写博 ...

  10. C# XSD校验XML文件的代码

    /// <summary> /// XSD文件校验XML /// </summary> /// <returns></returns> public A ...