傲娇Android二三事之操蛋的开发日记(第一回)
武宗元年 十一月初四 霾
今日魔都,依旧仙雾环绕,仿佛蓬莱落凡尘。望着470这个鲜红的AQI修仙指数,贫道不禁吟道,“正是修仙好光景,雾霾时节又逢君”。但在这个只修bug,不修仙的时代,路上的行人都步履匆匆赶着去修改属于自己的bug。这不贫道也赶着修改自己的bug。话说最近贫道在开发一个某网站的登录客户端,如果密码输入常用的英语字符啥的,则相安无事。但一旦输入诸如:€,¥,$货币符号,貌似服务器是克朗台开发的,见钱眼开啊,立马高潮到crash,发了个"class=java.nio.charset.MalformedInputException msg=Input length = 1"错误,而没有正确返回Input里含有特殊字符的错误。但奇怪的是,从网站里登陆,即使你输入的密码全是由€,¥,$组成的,此时的服务器又变成了铁面无私的包黑子了,立马返回Input里含有特殊字符的错误。贫道暗想:“这服务器哥们没长两条腿可惜了,否则跑到洛杉矶啥的,今年的小金人就非他莫属了”。
俗话说得好:“在家靠父母,出门靠百度”。打开百度页面,贫道先虔诚的焚香拜了两拜,然后小心翼翼的输入java.nio.charset.MalformedInputException,只见立马众道友的修炼心得犹如窗外的仙霾滚滚而来。只见其中的一位道友写道,”从java.nio.charset.MalformedInputException这个异常来看,应该是字符编码的问题。“难道是服务器没有编码处理?但如果是这样的话,为啥从网站登录就没问题呢。难道是网页发送请求的时候,对其中的内容进行了编码。贫道又立马输入”http 字符集“查询,这时吴秦吴大侠的一篇鸿篇巨作字符集和字符编码(Charset & Encoding),映入了贫道的眼帘,在此作中,吴大侠提到了:”在HTTP中,与字符集和字符编码相关的消息头是Accept-Charset/Content-Type“。难道是我们的代码中没有设置字符集信息,导致服务器识别错误,然后Crash了。贫道马上翻出相关代码,
HttpResponse putRequest(String strUrl,
Map<String, String> mapHeaders, String strContent) {
HttpResponse response = null; try {
HttpClient httpClient = getHttpClient();
HttpPut method = new HttpPut(strUrl); if (mapHeaders != null && !mapHeaders.isEmpty()) {
for (String key : mapHeaders.keySet()) {
method.addHeader(key, mapHeaders.get(key));
}
} if (strContent != null)
method.setEntity(new StringEntity(strContent));
response = httpClient.execute(method);
} catch (Exception ex) {
ex.printStackTrace();
}
return response;
}
果然将strContent放到Entity里的时候,没有任何的字符集设置。但如何给strContent设置字符集呢,贫道赶忙翻开了与”葵花宝典“齐名的developer android , 只见典籍中记载道 public StringEntity (String s, String charset) ,看来StringEntity是可以设定字符集名称,来告知服务器其所携内容的字符集。贫道赶忙又修改了下代码,
HttpResponse putRequest(String strUrl,
Map<String, String> mapHeaders, String strContent) {
HttpResponse response = null; try {
HttpClient httpClient = getHttpClient();
HttpPut method = new HttpPut(strUrl); if (mapHeaders != null && !mapHeaders.isEmpty()) {
for (String key : mapHeaders.keySet()) {
method.addHeader(key, mapHeaders.get(key));
}
} if (strContent != null)
method.setEntity(new StringEntity(strContent,"UTF-8"));
response = httpClient.execute(method);
} catch (Exception ex) {
ex.printStackTrace();
}
return response;
}
果然修改后,服务器也如同预料地那样,返回了Input里含有非法字符的错误。此时的服务器发出了由衷的赞叹:”自从客服端改了代码后, 腰不酸,腿不疼,处理其请求来,再也不crash了。"
道可道,非常道。看来在IT的世界中,一样有“道”的存在,在本例中,这个"道"就是字符集。
此时的贫道,又拿起了道德经,走在蔼蔼的仙霾中,重新温习了起来,远处传来一串串麻雀的咳嗽声。
傲娇Android二三事之操蛋的开发日记(第一回)的更多相关文章
- 淘宝(阿里百川)手机客户端开发日记第一篇 android 主框架搭建(一)
android 主框架搭建(一) 1.开发环境:Android Studio 相继点击下一步,直接项目建立完毕(如下图) 图片看的效果如果很小,请放大您的浏览器显示百分比 转载请注明http://w ...
- 《Android深度探索HAL与驱动开发》第一章阅读心得
首先了解到Android系统架构是由四层构成:其中第一层是Linux内核,他的作用是负责Linux的驱动程序以及内存.进程.电源等管理操作:第二层是C/C++代码库,也就是Linux下.so的文件:第 ...
- “数学口袋精灵”App的第三个Sprint计划----开发日记(第一天12.7~第十天12.16)
“数学口袋精灵”第三个Sprint计划----第一天 项目进度: 基本完成一个小游戏,游戏具有:随机产生算式,判断对错功能.通过轻快的背景音乐,音效,给玩家提供一个良好的氛围. 任务分配: 冯美欣: ...
- 【Android开发日记】之入门篇(十二)——Android组件间的数据传输
组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...
- 在Android中使用OpenGL ES进行开发第(二)节:定义图形
一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...
- Android高手速成--第四部分 开发工具及测试工具
第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...
- Android深度探索--HAL与驱动开发----第五章读书笔记
第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...
- Google Developing for Android 二 - Memory 最佳实践 // lightSky‘Blog
Google Developing for Android 二 - Memory 最佳实践 | 分类于 Android最佳实践 原文:Developing for Android, II Th ...
- Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
Android SDK+Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建 这几天一直在研究 Android SDK C/C++平台的搭建,尽管以前有成功在Windows ...
随机推荐
- 学习面试题Day03
1.Java中的注释有哪些? 如果不算Annotation,Java的注释有3种,即行注释.块注释和文档注释.它们往往适合于不同地方的注释,其中文档注释比较特殊,它的注释信息可以进入到javadoc文 ...
- SDUT 3258 Square Number 简单数学
和上一题一样,把平方因子除去,然后对应的数就变成固定的 #include <cstdio> #include <iostream> #include <algorithm ...
- xcode archive导出ipa时重签名
折腾了一晚上用另外的签名从xcode archive导出ipa,最后发现居然是没有导入p12文件的原因.... 顺便把参考的帖子记录一下: http://stackoverflow.com/quest ...
- about云资源汇总指引V1.4:包括hadoop,openstack,nosql,虚拟化
hadoop资料 云端云计算2G基础课程 (Hadoop简介.安装与范例) 炼数成金3G视频分享下载 虚拟机三种网络模式该如何上网指导此为视频 Hadoop传智播客七天hadoop(3800元)视频, ...
- Apache Hadoop 源码阅读
总之一句话,这些都是hadoop-2.2.0的源代码里有的.也就是不光只是懂理论,编程最重要,还是基本功要扎实啊.... 在hadoop-2.2.0的源码里,按Ctrl + Shift + T . 跳 ...
- Apache Hadoop压缩包与Eclipse结合,导入jar包归整总结(手动)
************************* 有些,是没必要全导入的.以后到工作了,用Maven,就自动会导入其中一些.************************ 一般,工作中,用的更多 ...
- 笔记-iOS 视图控制器转场详解(上)
这是一篇长文,详细讲解了视图控制器转场的方方面面,配有详细的示意图和代码,为了使得文章在微信公众号中易于阅读,seedante 辛苦将大量长篇代码用截图的方式呈现,另外作者也在 Github 上附上了 ...
- ACM_基础知识
1. PI值的定义 const double PI = acos(-1.0); 2. system("pause")就是调用从程序中调用系统命令,而"pause" ...
- SqlLite ---.net连接数据库
初识SqlLite ---.net连接数据库 SqlLite以小巧和嵌入式闻名,以前只是听说,现在终于忍不住要尝试下. 先下载ADO.NET2.0 Provider for SQLite,下载完后 ...
- Java图片上传压缩处理
所需要的jar包在:\jdk1.7.0_25\jre\lib\rt.jar里面 package util; import java.awt.Image; import java.awt.image.B ...