android 中post上传数据返回值是乱码问题的解决

安卓4.4.4短信中继方案:Magisk系统级权限调度实战 安卓短信自动化本质是跨进程通信与系统权限协同问题。在Android 4.4.4(KitKat)等老旧系统中,因缺乏运行时权限机制、广播接收器易被回收、SELinux强制策略及LowMemoryKiller进程清理等限制,传统Root方案无法保障短信监听服务长期稳定运行。Magisk通过systemless注入、init.d早期启动、SELinux动态策略修补和MagiskHide伪装四大技术路径,重构了底层权限调度逻辑,使轻量级守护进程可毫秒级自启并安全访问短信数据库与GSM模块。该方案无需新硬件,复用随身 阅读详情

最近有一个需求,上传软件中用户的自定义内容。遇到一个问题,post 能传递上数据,但是上传的返回值却是乱码。

代码如下:

HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost("http://xx.xx.xx.xx");
		httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
		httpPost.addHeader("Accept-Encoding", "gzip,deflate,sdch");
		try {
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair("uid", "fff"));
			params.add(new BasicNameValuePair("action", "set"));
			params.add(new BasicNameValuePair("data", "112"));

			HttpEntity entity = new UrlEncodedFormEntity(params);
			httpPost.setEntity(entity);
			HttpResponse response = httpClient.execute(httpPost);
			HttpEntity responseEntity = response.getEntity();
			if (responseEntity != null) {
				Log.i("~peter", EntityUtils.toString(responseEntity, "utf-8"));
			} else {
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 释放资源
			httpClient.getConnectionManager().shutdown();
		}

打印log 如下:

02-18 15:47:11.365: I/~peter(6092): ~peter �������������+)*M���L��������

后来找到原因:

原因在于代码中的这句:

httpPost.addHeader("Accept-Encoding", "gzip,deflate,sdch");

在header 中 使用 Accept-Encoding字段,服务端默认使用了第一个gzip的压缩格式传输数据。所以会出现乱码。


两种解决方法:

1. 去掉这句 : httpPost.addHeader("Accept-Encoding", "gzip,deflate,sdch");

2. 接收消息的地方解压一下。

		HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost("http://mm.maxthon.cn/mxbrowser/userdata.php");
		httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
		httpPost.addHeader("Accept-Encoding", "gzip,deflate,sdch");
		try {
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair("uid", "fff"));
			params.add(new BasicNameValuePair("action", "set"));
			params.add(new BasicNameValuePair("data", "112"));

			HttpEntity entity = new UrlEncodedFormEntity(params);
			httpPost.setEntity(entity);
			HttpResponse response = httpClient.execute(httpPost);
//			HttpEntity responseEntity = response.getEntity();
//			if (responseEntity != null) {
//				Log.i("~peter", EntityUtils.toString(responseEntity, "utf-8"));
//			} else {
//				
//			}
			
			//解压返回数据
			byte[] body = EntityUtils.toByteArray(response.getEntity());
			if(MxHttpClient.isGzipContentEnc(response)){
				body = MxHttpClient.unzipData(body);
			}
			Log.i("~peter", "result=" + new String(body));
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 释放资源
			httpClient.getConnectionManager().shutdown();
		}

	public static boolean isGzipContentEnc(HttpResponse response) {
		String contentEnc = null;
		Header header = response.getEntity().getContentEncoding();
		if (header != null) {
			contentEnc = header.getValue();
		}
		if (contentEnc != null && contentEnc.toLowerCase().indexOf("gzip") >= 0) {
			return true;
		}
		return false;
	}

	public static final byte[] unzipData(byte[] in) {
		ByteArrayInputStream bais = null;
		ByteArrayOutputStream baos = null;
		try {
			bais = new ByteArrayInputStream(in);
			baos = new ByteArrayOutputStream();
			unZipData(bais, baos);
				
		}// of try
		catch (Exception ioe) {
			ioe.printStackTrace();
			baos = null;
		} finally {
			try {
				if (bais != null)
					bais.close();
				if (baos != null)
					baos.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	   
		return baos.toByteArray();
	}





小程序抓包实战:突破SSL Pinning与沙盒限制的Frida Hook方案 HTTPS协议与SSL/TLS加密是保障网络通信安全的核心技术,其通过数字证书和握手流程建立可信连接。SSL Pinning(证书绑定)作为一项增强安全性的技术,通过在客户端预置服务器证书指纹,有效防止了中间人攻击,提升了移动应用的数据传输安全性。在移动应用开发与安全测试领域,如何在不破坏应用完整性的前提下,对加密流量进行合规分析,是开发者与安全研究员面临的实际挑战。特别是在小程序这类运行于沙盒环境的应用中,其网络请求受到严格管控,传统代理抓包方法往往失效。本文聚焦于使用动态二进制插桩技术,通过Hook应用 阅读详情

相关推荐

硬件开发实践:高速 PCB 差分信号与时钟同步优化

由两条互补信号线组成(正负极)接收端只关注两线之间电压差共模噪声对两线同时作用,可被抵消。

2501_93174775的博客 393

HttpClient发送附件post提交form表单非法请求,上传文件各个参数的作用

像上文中,content-type是multipartFile的,带有boundary,说明要上传附件。学完之后回顾,感觉本机发出的请求头依然没什么大毛病,于是去搜索,http请求附件的报文格式,发现人家的content-type怎么画风这么清新,在某篇文章里看到,MIME类型这个词,才去搜索了一下,我要传的文件,对应的类型。请求主体有内容时,需要在请求头中添加Content-length的值,即请求主体的长度。需要对接第三方接口,他们的接口是这样的,需要以form表单的形式传个文件。

mapleqn的博客 2784

基于ESP32-C3的物联网硬件设计:从免费工具链到PCB打样全流程实战

在物联网和嵌入式开发领域,硬件设计是连接软件逻辑与物理世界的关键环节。其核心原理在于通过电路设计将微控制器、传感器、通信模块等电子元件有机整合,实现特定功能。掌握硬件设计能力的技术价值在于能够自主实现产品原型,优化成本与性能,并深入理解系统底层运作。常见的应用场景包括智能家居节点、环境监测设备、工业传感终端等。本文以热门的ESP32-C3 RISC-V物联网芯片和广泛使用的KiCad免费EDA工具为例,详细解析了从核心器件选型、射频电路布局、PCB设计规则到Gerber文件生产的完整流程,并分享了在嘉立创平

weixin_30918633的博客 333

一次POST调用,响应结果乱码问题排查(2)

一次POST请请求分析

YTREE_BJ的博客 1329

3D Slicer中文教程(三)—数据加载及保存方式

1.打开数据与保存数据 (1)打开数据 ——可以将数据拖拽到3D Slicer应用窗口或者从菜单栏工具栏打开。 ——多种方式加载大量数据。 有关DICOM数据,请参阅DICOM模块文档。 对于几乎所有其他(包括场景),您可以使用添加数据对话框。 有关支持的数据格式的列表,请参阅此列表。 请注意,仅部分支持列出的某些格式。 ——对于一些更复杂的格式(特别是DWI),建议首先使用DICOM到n...

weixin_33676492的博客 5534

贝叶斯校准在计算机模型不确定性分析中的实践指南

本文深入探讨了贝叶斯校准在计算机模型不确定性分析中的核心原理与实践方法。通过将模型从“黑箱”转变为“透明箱”,该方法系统量化了参数不确定性、模型结构缺陷及观测误差。文章重点阐释了如何利用高斯过程作为代理模型和模型不足函数,构建完整的贝叶斯校准框架,并提供了从数据准备、模型训练到MCMC推断及不确定性分析的实战指南,最终实现更可靠的预测与决策支持。

weixin_29088655的博客 292

Get/Post请求乱码问题原因及解决方法

由于Tomcat使用的编码格式是 ISO-8859-1,而JSP里面使用的是utf8,解码和编码形成了冲突,所以才会导致乱码。

weixin_64765980的博客 1932

complier lab2

只需支持定义 main 函数即可不带参数 int main(){...}带参数 int main(int argc, int argv){...}

qq_43581843的博客 905

Android,Post请求返回乱码问题的处理方式

究其原因,是因为本地与服务器返回数据格式不匹配造成: 处理方式:result=new String(result.getBytes("ISO-8859-1"),"utf-8"); 将请求返回的字符串进行转码。   但还是有部分文字不能转码正确。。还是很纠结。但是大部分字可以正常显示   大家还有没有其他更好的方式哈!!!   谢谢了。。。

5161

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 599

OpenCV-Python实战(1)——OpenCV简介与图像处理基础

OpenCV 是一个的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时也提供了 Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。在本文中,将介绍 OpenCV 库,包括它的主要模块和典型应用场景,同时使用 OpenCV-Python 实战讲解图像处理基础要点。

盼小辉丶的博客 27万+

解决乱码过滤器

在web.xml中配置如下: <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class...

Tang_cancan的博客 577

【工业相机】【深度4】线扫描相机 - 选型实践

前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型、参数、应用计算等做了一些说明。期中,在深度3里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机行频速度的计算公式和镜头的选型的大致说明,感觉说的还是不够透彻,切应用举例也不充分,这里特别开一个章节,基于线扫描相机的特点对比面阵相机的特点进行比较详细的说明,尤其对线扫描相机的选型实践,尤其是线扫描相机的分辨率选择计算、行频选择计算进行了充分的说明和计算说明,希望能够给用到线扫描工业相机的同学给予一定的参考: 阐述: 在编

山云的专栏 2万+

android servlet乱码问题,初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)...

Servlet映射的细节同一个Servlet映射多个URL上,即多个元素的子元素的设置值可以是同一个Servlet的注册名第一种方法:第二种方法:第三种方法:通配符(*.do 或者 *.html)第四种方法:通配符(/*)HttpServletRequest创建Servlet实现了Servlet接口//servlet服务的方法public void service(ServletRequest a...

weixin_35697229的博客 148

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文件的上传\-\请求参数的中文乱码问题------11-10-20

文件的上传 1、怎样获取请求消息中的实体内容? 借助流的操作。用getInputStream()或者getReader()取决于读取请求消息中发来的实体内容。 (1)通过调用getInputStream() 获取字节的输入流,和请求消息中的实体内容相关联。一读一写,中间没有任何处理的情况下,用getInputStream()。 (2)getReader()获取字符的数输入流,用于返回一个

1180

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android使用XUtils框架上传照片(一张或多张)和文本,服务器接收照片和文字(无乱码)

Android上传图片,这里我使用了现在比较流行的XUtils框架,该框架可以实现文件上传、文件下载、图片缓存等等,有待研究。 下面是Android段上传的代码: String uploadHost="http://192.168.1.100:8080/ReceiveImgFromAndroid/ReceiveImgServlet"; //服务器接收地址 RequestParams pa

linzhiyong的专栏 4481

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文件上传与参数乱码

文件的上传 1、怎样获取请求消息中的实体内容? 借助流的操作。用getInputStream()或者getReader()取决于读取请求消息中发来的实体内容。 (1)通过调用getInputStream() 获取字节的输入流,和请求消息中的实体内容相关联。一读一写,中间没有任何处理的情况下,用getInputStream()。 (2)getReader()获取字符的数输入流,用于返回一个

chenlingA的专栏 892

javaweb做android接口,【Android】Web开发之通过标准Java接口处理Http请求

处理GET请求核心代码import java.net.*;import java.io.*;URL url = "http://10.0.2.2/android/http_get.jsp?username=tom";// 使用HttpURLConnection打开连接HttpURLConnection urlConn = (HttpURLConnection) url.openConnection...

weixin_42522320的博客 235

Android使用XUtils框架上传照片(一张或多张)和文本,server接收照片和文字(无乱码)...

Android上传图片,这里我使用了如今比較流行的XUtils框架。该框架能够实现文件上传、文件下载、图片缓存等等,有待研究。 以下是Android端上传的代码: xUtils.jar下载 String uploadHost="http://192.168.1.100:8080/ReceiveImgFromAndroid/ReceiveImgServlet"; //serv...

weixin_33857679的博客 266

ajax和map返回数据类型,ajax请求后台返回map类型并如何展示

前台jsp或者ftl文件接收返回结果:注意:value值用单引号,因为后台返回的结果是json字符串前台js接收返回结果:success: function(data){var result = jQuery.parseJSON(data);//也可以这么写:JSON.parse(data);if(result.isCopied=="true"){myAlert1('复制页面成功!');setTi...

weixin_30234101的博客 939

android xml编码格式,android 解析gbk编码格式的网络xml文件

1.网络接口:如[urlStr下]:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13454522345"2.返回数据public String resposeString(String urlStr){String result = "";try{URL url = new URL(urlStr);HttpURL...

weixin_31630721的博客 213

android 解析gbk编码格式的网络xml文件

1.网络接口: 如[urlStr下]:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13454522345" 2.返回数据 public String resposeString(String urlStr){ String result = ""; try { URL url = new U

GG之家 2764

【Android】Web开发之通过标准Java接口处理Http请求

处理GET请求核心代码 import java.net.*;import java.io.*; URL url = "http://10.0.2.2/android/http_get.jsp?username=tom"; // 使用HttpURLConnection打开连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConne

欲买桂花同载酒,终不似,少年游。 4467

OpenClaw:基于Frida的Android应用动态分析与自动化测试平台实战指南

动态代码插桩技术是移动安全分析和应用行为监控的核心手段,它通过在目标进程运行时注入代码,实现对函数调用、内存读写等操作的实时监控与干预。其原理是通过Hook机制拦截并修改程序执行流,从而在不修改源码的情况下,深度洞察应用逻辑。这项技术在安全研究、逆向工程和自动化测试领域具有极高价值,能有效发现隐蔽漏洞、分析恶意软件行为及验证应用合规性。Frida作为主流的动态插桩框架,提供了强大的底层API,但在复杂任务管理和工程化应用上存在门槛。OpenClaw正是为解决这一痛点而生,它将Frida的能力封装为Web化图

weixin_33716154的博客 355

Android逆向实战:基于Xposed框架绕过证书钉扎,实现Pokémon Go网络流量分析

在移动应用安全与逆向工程领域,中间人攻击(MITM)是一种核心的流量分析技术,用于解密和审查客户端与服务器之间的加密通信。其原理是在通信链路中插入一个代理,拦截并可能修改传输的数据。然而,现代应用普遍采用证书钉扎技术来防御此类攻击,它通过将特定的SSL证书硬编码在应用内,使系统信任的证书库失效,从而保护通信安全。为了进行合法的安全研究、协议分析或功能调试,技术人员需要找到方法绕过这一防线。这通常涉及对应用运行时的底层Hook,例如在Android平台上使用Xposed框架动态修改应用的关键方法。通过Hook

weixin_34387468的博客 371

Retrofit一依赖于OkHttp 的请求库

首先我们先看gitHup官方上的介绍 A type-safe HTTP client for Android and Java Android和Java的类型安全的HTTP客户端请求库 那么到底什么是Retrofit 框架呢 Retrofit 是Squarre公司出品的目前非常流行的网络框架,效率高,实现简单.运用注解原理和动态代理,极大的简化了网络请求得繁琐步骤,非常适合处理REST fu

OutOfThinAir的博客 1238
上一篇: android 中 的md5加密信息内容
下一篇: android adb shell 获取root权限
javalive09
博客等级 码龄16年 43粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值