`

用httpclient4.x 发送http get post请求 中文编码问题

阅读更多
  1. <pre name="code" class="java">package org.ibmp.gmp.util;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.UnsupportedEncodingException;  
  5. import java.net.URI;  
  6. import java.net.URISyntaxException;  
  7. import java.net.URLEncoder;  
  8. import java.text.SimpleDateFormat;  
  9. import java.util.ArrayList;  
  10. import java.util.Date;  
  11. import java.util.List;  
  12.   
  13. import org.apache.http.HttpEntity;  
  14. import org.apache.http.HttpResponse;  
  15. import org.apache.http.NameValuePair;  
  16. import org.apache.http.ParseException;  
  17. import org.apache.http.client.ClientProtocolException;  
  18. import org.apache.http.client.HttpClient;  
  19. import org.apache.http.client.entity.UrlEncodedFormEntity;  
  20. import org.apache.http.client.methods.HttpGet;  
  21. import org.apache.http.client.methods.HttpPost;  
  22. import org.apache.http.entity.StringEntity;  
  23. import org.apache.http.impl.client.DefaultHttpClient;  
  24. import org.apache.http.message.BasicNameValuePair;  
  25. import org.apache.http.protocol.HTTP;  
  26. import org.apache.http.util.EntityUtils;  
  27.   
  28. public class HttpClientUtil {  
  29.   
  30.     private static HttpClient httpClient = new DefaultHttpClient();  
  31.   
  32.     /**  
  33.      * 发送Get请求  
  34.      * @param url  
  35.      * @param params  
  36.      * @return  
  37.      */  
  38.     public static String get(String url, List<NameValuePair> params) {  
  39.         String body = null;  
  40.         try {  
  41.             // Get请求  
  42.             HttpGet httpget = new HttpGet(url);  
  43.             // 设置参数  
  44.             String str = EntityUtils.toString(new UrlEncodedFormEntity(params));  
  45.             httpget.setURI(new URI(httpget.getURI().toString() + "?" + str));  
  46.             // 发送请求  
  47.             HttpResponse httpresponse = httpClient.execute(httpget);  
  48.             // 获取返回数据  
  49.             HttpEntity entity = httpresponse.getEntity();  
  50.             body = EntityUtils.toString(entity);  
  51.             if (entity != null) {  
  52.                 entity.consumeContent();  
  53.             }  
  54.         } catch (ParseException e) {  
  55.             e.printStackTrace();  
  56.         } catch (UnsupportedEncodingException e) {  
  57.             e.printStackTrace();  
  58.         } catch (IOException e) {  
  59.             e.printStackTrace();  
  60.         } catch (URISyntaxException e) {  
  61.             e.printStackTrace();  
  62.         }  
  63.         return body;  
  64.     }  
  65.   
  66.     /**  
  67.      * 发送 Post请求  
  68.      * @param url  
  69.      * @param reqXml  
  70.      * @return  
  71.      */  
  72.     public static String post(String url, String reqXml) {  
  73.         String body = null;  
  74.         try {  
  75.             //设置客户端编码  
  76.             if (httpClient == null) {  
  77.                 // Create HttpClient Object  
  78.                 httpClient = new DefaultHttpClient();  
  79.                 }  
  80.             httpClient.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);  
  81.             httpClient.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);  
  82.             httpClient.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);  
  83.             httpClient.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET,HTTP.UTF_8);  
  84.             // Post请求  
  85.             HttpPost httppost = new HttpPost(url);  
  86.             //设置post编码  
  87.             httppost.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);  
  88.             httppost.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);  
  89.             httppost.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);  
  90.             httppost.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8);  
  91.       
  92.             // 设置参数  
  93.              List<NameValuePair> params = new ArrayList<NameValuePair>();  
  94.              params.add(new BasicNameValuePair("$xmldata", reqXml));  
  95.              httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));   
  96. //          StringEntity entity1 = new StringEntity(getUTF8XMLString(reqXml), "UTF-8");  
  97. //          entity1.setContentType("text/xml;charset=UTF-8");  
  98. //          entity1.setContentEncoding("UTF-8");  
  99. //          httppost.setEntity(entity1);  
  100.             //设置报文头  
  101.             httppost.setHeader("Content-Type", "text/xml;charset=UTF-8");  
  102.             // 发送请求  
  103.             HttpResponse httpresponse = httpClient.execute(httppost);  
  104.             // 获取返回数据  
  105.             HttpEntity entity = httpresponse.getEntity();  
  106.             body = EntityUtils.toString(entity);  
  107.             if (entity != null) {  
  108.                 entity.consumeContent();  
  109.             }  
  110.         } catch (UnsupportedEncodingException e) {  
  111.             e.printStackTrace();  
  112.         } catch (ClientProtocolException e) {  
  113.             e.printStackTrace();  
  114.         } catch (ParseException e) {  
  115.             e.printStackTrace();  
  116.         } catch (IOException e) {  
  117.             e.printStackTrace();  
  118.         }  
  119.         return body;  
  120.     }  
  121.     /**  
  122.      * 根据样式格式化时间  
  123.      * "yyyyMMdd"  
  124.      * "yyyyMMddHHmmss"  
  125.      * "yyyyMMddHHmmssssssss"  
  126.      * @param dateFormat  
  127.      * @return  
  128.      */  
  129.     public static String getnowDate(String dateFormat)  
  130.     {  
  131.         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);   
  132.         return sdf.format(new Date());  
  133.     }  
  134.   
  135. }
分享到:
评论

相关推荐

    二十四节气之霜降介绍.pptx

    二十四节气之霜降介绍.pptx

    整理PhotoShop美图的基础知识.doc

    整理PhotoShop美图的基础知识.doc

    Qt开发上位机:固高八轴运动控制卡与多米诺喷码机的集成应用

    内容概要:本文详细介绍了基于Qt框架开发的上位机软件,用于与固高八轴运动控制卡和多米诺喷码机进行通信与控制。主要内容涵盖硬件接口连接、喷码机功能实现、光学点定位、二维码读码与等级评测的技术细节,并展示了相关源码片段。此外,还讨论了多语言和多样式切换的功能实现,以满足不同用户的个性化需求。 适合人群:具有一定Qt开发经验的工程师和技术爱好者,尤其是从事工业自动化和机器视觉领域的专业人士。 使用场景及目标:适用于需要开发高效、稳定的上位机控制系统的企业和个人开发者。主要目标是掌握Qt框架在工业控制中的应用,提高系统的精度和稳定性,提升用户体验。 其他说明:文中提供的源码片段有助于读者理解和实践Qt与硬件设备的交互过程,进一步加深对Qt开发的理解。

    力士乐伺服编程调试软件中文版使用指南:IndraWorks MTX13V16与driver Top详解,IndraWorks DS英文版操作须知 代码分析

    内容概要:本文详细介绍了力士乐伺服编程调试三款软件——IndraWorks MTX13V16、driver Top 和 IndraWorks DS 的功能特点及其使用体验。这三款软件均适用于 Windows 7 和 Windows 10 系统,提供设备连接、参数设置、程序编写和调试等功能。IndraWorks MTX13V16 界面简洁,操作便捷,支持程序调试和优化;driver Top 注重用户体验,支持多种编程语言,提供丰富调试信息;IndraWorks DS 虽为英文版,但在中文说明书的帮助下易上手,响应速度快。所有软件均具备代码分析和仿真功能,提高编程调试工作的效率和准确性。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对力士乐伺服编程调试感兴趣的用户。 使用场景及目标:① 提供详细的软件安装和使用指南,帮助用户快速上手;② 分享编程调试经验,提升工作效率;③ 探讨不同软件的特点,便于用户根据需求选择合适的工具。 其他说明:文中提到的三款软件均为力士乐公司产品,在工业自动化领域应用广泛,能够满足不同的编程调试需求。

    基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)

    基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoot和微服务架构的养老机构管理系统源码(毕业设计)基于SpringBoo

    教师面试试讲答辩小学英语听说课Hereisaredhat.docx

    教师面试试讲答辩小学英语听说课Hereisaredhat.docx

    数据库课程设计安排.doc

    数据库课程设计安排.doc

    机器学习(预测模型):一个关于城市自行车出行的数据集

    一个关于城市自行车出行的数据集,它记录了城市中自行车租赁服务的详细出行信息。该数据集通常包含多个字段,例如每次骑行的起始时间、结束时间、出发地点和到达地点的地理坐标(如经度和纬度)、骑行时长、自行车编号、用户类型(如注册会员或临时用户)等。这些丰富的数据维度为研究城市交通模式、居民出行习惯以及自行车租赁服务的运营效率提供了宝贵的信息。 数据集的规模可能因城市大小和数据收集时间跨度而异,但通常包含数万甚至数十万条记录。通过分析这些数据,可以发现城市中某些区域的骑行热度较高,例如商业区或旅游景点附近,这些地方可能是人们使用自行车的高频区域。同时,骑行时间的分布也能揭示出人们的出行规律,例如在工作日的早晚高峰时段,骑行量可能会显著增加,而在周末或节假日,骑行的目的地可能会更多地集中在休闲娱乐场所。 此外,该数据集还可以用于评估自行车租赁服务的运营状况,比如通过分析不同时间段的骑行时长和频率,了解自行车的使用效率和周转情况。对于城市规划者来说,这些数据有助于优化自行车道的布局,改善交通拥堵,促进绿色出行。而对于研究人员,它可以作为研究城市交通、环境影响以及社会行为模式的有力工具。总之,该数据集是一个极具价值的数据资源,能够为多个领域的研究和决策提供支持。

    基于UDS的BootLoader上位机源代码:ISO15765通信,PeakCAN、ZJG CAN支持,S-record格式解析,可二次开发扩展

    内容概要:本文详细介绍了基于UDS协议的BootLoader上位机源代码的实现方法及其扩展应用。主要内容涵盖:使用C#实现支持ISO15765通信的多厂商CAN卡适配器,如PeakCAN和ZJG CAN;S-record格式的正确解析与处理,确保地址连续性避免ECU故障;以及通过反射机制动态加载UDS服务进行功能扩展。此外,还讨论了调试技巧,如CAN报文日志记录和性能优化策略,如Pipeline模式批量请求处理。 适合人群:熟悉C#编程语言并对汽车电子控制系统有一定了解的研发人员和技术爱好者。 使用场景及目标:适用于开发车载刷写工具的专业人士,旨在帮助他们快速构建稳定可靠的BootLoader上位机系统,同时提供灵活的二次开发接口以满足特定项目需求。 其他说明:文中提供了大量实用代码片段作为示例,便于读者理解和实践相关概念和技术细节。

    操作系统课后答案详解.doc

    操作系统课后答案详解.doc

    基于Vivado的RISC-V 32位单周期处理器CPU设计与实现:SystemVerilog代码解析及学习指南

    内容概要:本文详细介绍了基于Vivado平台的RISC-V 32位单周期处理器CPU的设计与实现。该处理器采用SystemVerilog编写,结构简单明了,分为四个主要模块:取指令、译指、执行和写回。文中提供了详细的代码片段,如寄存器堆设计、指令译码、存储器接口以及ALU模块的实现,并解释了各个模块的工作原理。此外,文章还讨论了一些常见的设计陷阱和技术细节,如异步读同步写的寄存器设计、指令编码方式、存储器冲突处理等。附赠的《RISC-V手册中文版》和指令集文档为初学者提供了宝贵的学习资料。 适合人群:具备基本硬件描述语言基础的电子工程学生、嵌入式系统开发者及对RISC-V架构感兴趣的初学者。 使用场景及目标:① 学习RISC-V架构的基本概念和指令集;② 掌握SystemVerilog编程技巧;③ 理解单周期处理器的工作流程及其内部模块的协同工作;④ 提高硬件设计和仿真的能力。 其他说明:文章强调了动手实践的重要性,鼓励读者通过修改测试用例并观察波形图的变化来加深对CPU工作原理的理解。同时提醒读者注意一些常见问题,如字节序问题和溢出处理。

    数据通信基础知识.pptx

    数据通信基础知识.pptx

    混合动力系统Simulink建模:能量管理和功率分配的两种电电混动模型解析

    内容概要:本文详细介绍了两种用于混合动力系统的Simulink模型,分别是侧重于能量管理和功率分配的电电混动模型。能量管理模型主要关注长期的能量平衡,通过模糊控制模块和SOC窗口机制确保电池健康运行;而功率分配模型则专注于实时的功率流计算,采用最小二乘法进行约束优化,以实现实时的扭矩分配。文中还提到了两者在实际应用中的挑战,如调参难度、计算延迟以及低温环境下的性能调整等问题。此外,文章强调了将这两种模型结合起来进行联合仿真的重要性和复杂性,特别是时钟同步的问题。 适合人群:从事混合动力系统研究和开发的技术人员,尤其是熟悉Simulink工具的工程师。 使用场景及目标:帮助研究人员更好地理解和掌握混合动力系统中能量管理和功率分配的关键技术和难点,为实际项目提供理论支持和技术指导。 其他说明:文章不仅提供了详细的模型介绍,还分享了一些实际测试中的经验和教训,有助于读者避免常见错误并提高模型的鲁棒性。

    Day2-Java思维笔记

    Day2-Java思维笔记

    基于MATLAB的BP神经网络用于数据分类预测与故障信号诊断的技术实现 - 数据分类

    内容概要:本文档详细介绍了利用MATLAB实现BP神经网络进行数据分类预测和故障信号诊断的方法。首先,文档解释了如何准备和预处理数据,包括加载、分割以及归一化操作。然后,构建了一个双隐层的BP神经网络模型,指定了各层的激活函数和训练算法,并设置了训练参数。接下来,进行了模型训练并展示了如何评估模型性能,包括计算准确率、绘制混淆矩阵和误差分布直方图。最后,提供了优化模型的一些建议,如调整隐层数量、更换训练算法或增加数据量。 适用人群:适用于具有一定MATLAB编程基础和技术背景的研究人员、工程师或学生,特别是那些对机器学习、神经网络及其应用感兴趣的群体。 使用场景及目标:该方法可用于各种需要分类预测的任务,尤其是工业设备故障检测等领域。主要目的是帮助用户快速理解和掌握BP神经网络的工作原理及其具体实现方式,同时提供实用的操作指南以便于实际项目中的应用。 其他说明:文中提供的代码可以直接运行,并附带详细的注释,便于读者理解每一步骤的功能和意义。此外,还给出了针对不同情况下的改进措施,使得该解决方案更具灵活性和适应性。

    智能驾驶领域基于深度学习与单目摄像头测距的前车碰撞预警(FCW)源码解析

    内容概要:本文详细介绍了基于深度学习和单目摄像头测距的前车碰撞预警(FCW)系统的技术要点及其源码。主要内容涵盖单目测距、多目标跟踪和车辆检测三大核心技术,这些都是智能ADAS系统的重要组成部分。文中还特别强调了不同软件版本之间的兼容性问题,如GPU和CPU版本的具体配置,包括Anaconda、CUDA、cuDNN、TensorFlow、OpenCV和Keras等工具和技术栈的选择。此外,提供了相关代码片段作为示例,帮助读者更好地理解和应用这些技术。 适合人群:对智能驾驶感兴趣的研究人员、工程师以及希望深入了解FCW系统内部机制的专业人士。 使用场景及目标:适用于需要开发或改进智能驾驶辅助系统的企业和个人开发者,旨在提高车辆行驶安全性,减少交通事故发生率。 阅读建议:由于涉及到较多的技术细节和代码实现,建议读者具备一定的编程基础和机器学习背景,在阅读过程中结合实际案例进行练习,以便更好地掌握所学知识。

    发送和接收文件LocalSend-1.17.0-android

    文件发送和接收,快捷高效便利,安卓版

    欧姆龙PLC NJ-1400基于EtherCat总线的电池生产线自动化控制方案详解

    内容概要:本文介绍了欧姆龙PLC NJ-1400在电池生产线中的应用,重点讲解了EtherCat总线控制24个伺服轴和6个扫描枪的技术实现。文中详细描述了PLC配置、ST语言编程、FB块设置、远程IO终端连接及详细的IO表说明。此外,还涵盖了生产线各环节的工艺流程、位置变量定义及其重要性。最后提出了项目实施中的注意事项和优化建议。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉PLC编程和EtherCat总线技术的专业人士。 使用场景及目标:适用于需要深入了解PLC和EtherCat总线在复杂工业环境中的实际应用情况的人群。目标是帮助读者掌握大型电池生产线自动化控制的关键技术和最佳实践。 阅读建议:建议读者仔细研读PLC配置部分,特别是ST语言编程和FB块的具体实现方法。同时关注IO表和工艺流程的详细介绍,以便更好地理解和应用于实际工作中。

    电力系统无功优化中遗传算法及改进算法的应用研究——以14节点和33节点系统为例 无功优化

    内容概要:本文详细介绍了遗传算法及其改进版本在电力系统无功优化中的应用,特别是针对标准14节点和33节点系统。文中首先阐述了无功优化的基本概念,即通过调整发电机端电压、变压器变比、电容器容量等参数来减少网损、电压偏差和无功偏差。接着解释了遗传算法的工作原理以及其在处理复杂、非线性优化问题时的优势。随后,作者通过具体的案例分析,展示了遗传算法在这两个节点系统中的应用效果,证明了其有效性。最后讨论了改进后的遗传算法所带来的性能提升,强调了其在全球最优解搜索方面的优势。此外,还提供了MATLAB伪代码,帮助读者更好地理解和实现这一方法。 适用人群:从事电力系统研究和技术开发的专业人士,尤其是那些关注无功优化和智能电网发展的研究人员和技术人员。 使用场景及目标:适用于希望深入了解遗传算法在电力系统无功优化中应用的研究人员和技术人员。目标是在实际项目中应用遗传算法及其改进版本,以提高电力系统的经济性和安全性。 其他说明:本文不仅提供了理论分析,还包括了详细的实验数据和MATLAB伪代码,有助于读者快速掌握遗传算法的具体实现步骤。同时,也为后续研究提供了有价值的参考方向。

    新版可编程序控制器形成性考核作业及答案.doc

    新版可编程序控制器形成性考核作业及答案.doc

Global site tag (gtag.js) - Google Analytics