最近在做android,遇到从android客户端向服务器端发送汉字乱码问题。采用URLConnection的GET方式,在客户端和服
务端都需要进行转码,而采用POST方式则不需要转码。具体方法如下:
用URLConnection从android发送数据有两种方式:
第一种方式:采用get方式传值
(1)客户端代码:
URL url = new URL(mUrl);
URLConnection urlConnection = url.openConnection();
InputStream is = urlConnection.getInputStream();
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = is.read()) != -1) {
baf.append((byte) current);
}
requestInfo = new String(baf.toByteArray(), "UTF-8").trim();
is.close();
对汉字进行处理:
URLEncoder.encode(URLEncoder.encode(channelName, "UTF-8"), "UTF-8")
(2)服务器端接收字段:
URLDecoder.decode(URLDecoder.decode(request.getParameter("nickname"), "UTF-8"), "UTF-8")
第二种方式:采用Post方式:
客户端代码:
public String sendRemoteRequest(String path,String param){
Log.i("lisheng", param.toString());
Log.i("lisheng", path);
String strRes="";
OutputStream os = null;
DataOutputStream dos = null;
InputStream is = null;
BufferedReader br = null;
try {
URL url = new URL(path);
URLConnection urlConn = url.openConnection();
urlConn.setDoInput(true);
urlConn.setDoOutput(true);
os = urlConn.getOutputStream();
dos = new DataOutputStream(os);
dos.write(param.getBytes());
dos.flush();
dos.close();
os.close();
is = urlConn.getInputStream();
br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
for (String strLine = ""; (strLine = br.readLine()) != null;)
strRes = (new StringBuilder(String.valueOf(strRes))).append(strLine).toString();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return strRes;
}
参数里直接写汉字
服务器端代码:
request.setCharacterEncoding("UTF-8");
request.getParameter("nickname")
即可得到参数为汉字的值,不需要转码。
分享到:
相关推荐
在本节"057集-Android客户端与服务端交互-服务端代码"的视频教程中,我们将深入探讨Android应用程序如何与服务端进行有效且安全的通信,这对于开发任何涉及网络功能的Android应用来说都是至关重要的。这个教程针对的...
- Android系统提供了GCM(Google Cloud Messaging)和其后续的FCM(Firebase Cloud Messaging)服务,用于服务器向客户端发送实时消息,如消息通知或数据更新。 综上所述,"Android客户端+服务端"的架构涉及到了...
1. 请求API:客户端向服务端发送一个GET请求,获取待下载文件的URL或直接触发文件流的下载。 2. 文件保存:使用`DownloadManager`(系统级服务)或自定义下载管理类来下载文件。`DownloadManager`可以自动处理暂停...
本示例将详细讲解如何在Android上构建一个蓝牙通信系统,包括客户端和服务端的实现。 首先,理解蓝牙通信的基本概念是必要的。蓝牙是一种短距离无线通信技术,允许电子设备之间交换数据或建立连接,例如手机、电脑...
本实例将深入探讨如何构建一个Android Web Service客户端和服务端,并提供可直接运行的代码示例。以下是对这两个重要组件的详细说明。 **一、Android Web Service客户端** 在Android客户端,通常使用HTTP库来调用...
QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载...
在Android应用开发中,客户端与服务端的交互是不可或缺的一部分,尤其在实现用户登录功能时。本示例探讨的是如何在Android客户端与Eclipse服务端之间实现一个简单的登录功能。以下将详细介绍这个过程中的关键知识点...
在Android应用开发中,通信是不可或缺的一部分,尤其是在客户端与服务端之间进行实时数据交互时。本文将深入探讨如何使用Socket实现Android客户端与服务端之间的文字和图片收发功能。 首先,我们来理解Socket的基本...
《Android客户端+服务端菜谱精灵开发详解》 在当今移动互联网时代,应用程序已经成为人们日常生活中不可或缺的一部分。本文将深入探讨一个以“菜谱精灵”为主题的Android应用开发案例,涉及客户端和服务端的协同...
在本文中,我们将深入探讨如何实现客户端与服务端的交互,特别是在Android Studio中构建客户端应用,结合Java EE技术搭建服务端。这个项目涵盖了用户登录、注册功能,以及数据的增删改查操作,通过MySQL数据库进行...
在本文中,我们将深入探讨蓝牙客户端和服务端的实现,这对于理解蓝牙通信机制至关重要。 首先,我们来了解一下蓝牙的基础知识。蓝牙技术最初由电信巨头爱立信在1994年提出,旨在简化设备间的通信,尤其是移动设备。...
在Android应用开发中,客户端和服务端的连接是实现数据交互的关键环节。这个小型的网络服务器与安卓客户端的连接示例可能涵盖了HTTP、HTTPS协议、WebSocket、Socket编程等基础概念。以下将详细介绍这些知识点: 1. ...
《构建完整的Android购物商城系统:从客户端到服务端详解》 在移动互联网时代,购物商城App已经成为电商领域不可或缺的一部分。Android平台上的购物商城App更是占据了重要地位,它们为用户提供便捷的商品浏览、购买...
基于C++&Qt实现的在线点餐系统(客户端+服务端——.zip 基于C++&Qt实现的在线点餐系统(客户端+服务端——.zip 基于C++&Qt实现的在线点餐系统(客户端+服务端——.zip 基于C++&Qt实现的在线点餐系统(客户端+服务端...
本实践将详细介绍如何在Android环境中使用Netty进行客户端和服务端的通信。 首先,我们需要理解Netty的基本概念。Netty的核心是其EventLoopGroup(事件循环组),它负责处理I/O事件,并将它们分发到相应的...
本篇文章将深入探讨AIDL在Android客户端和服务端中的应用。 一、AIDL基础 1. AIDL语法:AIDL类似于Java接口,定义了一组方法,这些方法可以在客户端和服务端之间进行调用。每个AIDL文件包含一个接口声明,接口中...
【Android若水新闻客户端中服务端源码】的解析与详解 这个项目是为Android若水新闻客户端提供服务端支持的源代码,旨在帮助开发者学习如何构建一个新闻客户端的后台系统。服务端通常负责处理客户端的请求,如数据的...
当编译项目时,Android编译系统会自动生成对应的Java接口和Binder类,使得服务端和客户端可以使用这些接口进行交互。在服务端,我们需要实现这个接口,并在Service中注册它: ```java public class ...
这些服务在客户端注册设备令牌,服务器端通过令牌向客户端发送消息,避免了客户端长时间保持Socket连接带来的资源消耗。 综上所述,Android客户端与服务端的Socket长连接涉及到网络编程基础、多线程、数据编码解码...
在Android应用开发中,客户端和服务端之间的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本教程将详细阐述如何在Android客户端与服务端实现JSON数据的...