UrlConnection 请求乱码的解决办法
来源:互联网 发布:esp8266与51单片机 编辑:程序博客网 时间:2024/05/18 15:56
原先的代码如下:
public class GetMessage{ private static final String v_url = ""; public static String getPostInfo(String v_methodname, String v_urlparam) throws IOException { PrintWriter out = null; BufferedReader in = null; String result = ""; URL url = new URL(v_url + v_methodname); URLConnection conn = url.openConnection(); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("Accept-Charset", "UTF-8"); conn.setRequestProperty("contentType", "UTF-8"); conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); conn.setRequestProperty("Accept-Language", Locale.getDefault().toString()); conn.setRequestProperty( "Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setDoOutput(true); //String encoding = System.getProperty("file.encoding"); out = new PrintWriter(conn.getOutputStream()); out.print(v_urlparam); out.flush(); out.close(); result = readStrByCode(conn.getInputStream(), "UTF-8"); return result; } public static String readStrByCode(InputStream is, String code) { StringBuilder builder = new StringBuilder(); BufferedReader reader = null; String line=""; try { reader = new BufferedReader(new InputStreamReader(is, code)); while ((line = reader.readLine()) != null) { builder.append(line); } } catch (Exception e) { e.printStackTrace(); try { reader.close(); } catch (IOException e1) { e1.printStackTrace(); } } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } return builder.toString(); }}
这个在UFT-8项目里面调用没有问题,其他编码的调用就会出现乱码。经发现是这句代码引起字符集的变化
out = new PrintWriter(conn.getOutputStream()); 如果项目不是UTF-8就会转成当前环境的编码,修改成如下方式就解决问题了。
OutputStreamWriter out = new OutputStreamWriter(conn .getOutputStream(), "UTF-8"); out.write(v_urlparam);
如果涉及到对字段加密,需要将需要加密的字符先转成UFT-8的编码格式即:v_userid = new String(v_userid.toString().getBytes(“iso8859-1”), “utf-8”);
参考:
http://bbs.csdn.net/topics/390600822?page=1
http://bbs.csdn.net/topics/390632652?page=1
0 0
- UrlConnection 请求乱码的解决办法
- URLConnection在Tomcat中get、post请求消息乱码
- Java URLConnection请求的参数进行封装
- urlConnection 请求数据类的封装
- URLConnection得到的网页是乱码
- 关于get和post请求中文乱码的解决办法
- 使用URLConnection提交请求
- URLConnection 提交请求
- 使用 URLConnection提交请求
- URLConnection发送http请求
- URLConnection &HttpURLConnection 网络请求
- 解决URLConnection乱码问题
- 通过java.net.URLConnection发送HTTP请求的方法
- 通过java.net.URLConnection发送HTTP请求的方法
- JAVA代码java.net.URLConnection发送HTTP请求的方法
- 简单的利用UrlConnection,后台模拟http请求
- 通过java.net.URLConnection发送HTTP请求的方法
- URLConnection向指定的url发送请求并且带参数
- Thread之Exchanger
- 一、A*搜索算法
- 通过iOS 9 SFSafariViewController提供完整的Web浏览体验
- android 学习笔记 通知的使用
- ubuntu下安装deb文件
- UrlConnection 请求乱码的解决办法
- OCTEN vs intel DPDK
- 日经社説 20150826 企業自身で生産性高める働き方改革を
- 前端工程师需要掌握的技能
- 只有站的高才能看的远
- 如何根据当前时间生成唯一编号
- Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
- 阳光跟帖,见证“抗战大阅兵”的荣耀
- 采图延时