//访问Url,发送数据,获得返回数据。 public String readParse(String data) { String str=""; //synUrl为你要访问的URL HttpPost httpRequest = new HttpPost(synUrl); try { HttpClient client = new DefaultHttpClient(); // 请求超时 client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000); // 读取超时 client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000); //对数据进行编码 data=URLEncoder.encode(data,"UTF-8"); //将数据放入到string entity当中,发送的主题内容 StringEntity strEntity=new StringEntity(data); strEntity.setContentEncoding("UTF-8"); //将发送的数据放入到http请求当中 httpRequest.setEntity(strEntity); //设置请求头部 httpRequest.setHeader("Content_Type","application/json;charset=UTF-8"); //发送请求,接收响应数据 HttpResponse httpResponse =client.execute(httpRequest); httpResponse.setHeader("content_type","application/json;charset=UTF-8"); // 如果状态码为200,接收正常 if (httpResponse.getStatusLine().getStatusCode() == 200) { // 取出回应字串 str=EntityUtils.toString(httpResponse.getEntity()).trim(); strResult = str; } } catch (Exception e) { e.printStackTrace(); return null; } return strResult; }
最近使用学习开发android,涉及到前后台通信编码问题,上面给出android端代码。
网上还有另一种方式:
public boolean post(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文数据需要经过URL编码 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; byte[] data = params.getBytes(); URL url = new URL(address); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3000); //这是请求方式为POST conn.setRequestMethod("POST"); //设置post请求必要的请求头 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 请求头, 必须设置 conn.setRequestProperty("Content-Length", data.length + "");// 注意是字节长度, 不是字符长度 conn.setDoOutput(true);// 准备写出 conn.getOutputStream().write(data);// 写出数据 return conn.getResponseCode() == 200; }
虽然使用了不同的两种文本传输格式,但是都用到了URLEncoder类,这个类是用来进行编码的,因为汉字在传输过程中会出现字节丢失,因此需要重新编码,来解决这个问题。
下面是编码的实验:
public class test { public static void main(String args[]) { try { String str="你"; //编码一次 String res=URLEncoder.encode(str,"UTF-8"); System.out.println("encode one:"+res); //编码第两次 res=URLEncoder.encode(res,"UTF-8"); System.out.println("encode two:"+res); //解码一次 res=URLDecoder.decode(res,"UTF-8"); System.out.println("dencode one:"+res); //解码两次 res=URLDecoder.decode(res,"UTF-8"); System.out.println("dencode two:"+res); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * encode one:%E4%BD%A0 * encode two:%25E4%25BD%25A0 * dencode one:%E4%BD%A0 * dencode two:你 */ }
实验可以发现,encode two:只是在原来的基础上增加了%25,经过编码的传输,到服务器端在通过URLDecoder类就可以解码,这样就不会出现乱码问题。
没有编码情况下,发送“你”字的捕包如下:
POST /Todo/admin/syn.action HTTP/1.1 content_type: application/json;charset=UTF-8 Content-Length: 320 Content-Type: application/json;charset=UTF-8 Content-Encoding: UTF-8 Host: 10.16.15.88:9091 Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) {"title":"?"}
相关推荐
本文将详细讲解如何在Android Studio中使用Java语言和JSON数据格式实现POST请求,特别适合初学者学习。 **一、依赖库** 首先,我们需要引入必要的库,如OkHttp或Volley,它们可以帮助我们方便地发送网络请求。这里...
使用`execute()`方法执行POST请求,并通过`HttpResponse`获取服务器的响应。注意处理可能出现的异常。 ```java HttpResponse response; try { response = httpClient.execute(httpPost); } catch ...
在Android开发中,进行网络通信是常见的需求,而POST请求是一种常用的数据提交方式。本教程将深入探讨如何在Android原生环境中实现POST请求,并通过源码解析来理解其工作原理。 首先,Android中的网络操作主要依赖...
本篇将详细讲解Android中如何使用HTTPS进行GET和POST请求。 首先,HTTPS基于SSL/TLS协议,提供加密处理、服务器身份验证和消息完整性检查等功能。在Android中,我们通常会用到HttpURLConnection或者第三方库如...
Android Webview 拦截 Ajax 请求的详细讲解 Android Webview 提供了页面加载及资源请求的钩子,但是对于 H5 的 Ajax 请求并没有提供干涉的接口。这意味着我们不能在 Webview 中干涉 JavaScript 发起的 HTTP 请求,...
在Android中,我们通常使用`HttpURLConnection`或者第三方库如Volley、OkHttp来实现POST请求。 1. 使用`HttpURLConnection`发送POST请求: - 首先,我们需要建立到服务器的连接,设置请求方法为POST,并开启允许...
以上就是关于Android的OkHttp3框架中GET和POST请求的基本使用方法,通过这个库,开发者可以高效、安全地进行网络通信。在实际项目中,可以根据需求进行更复杂的定制和优化,例如设置超时、重试策略等。希望这个概述...
2. POST请求在Android中的实现: 对于POST请求,除了上述两种方式外,还需要设置请求方法并添加请求头。如下所示: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = ...
android发送get,post请求工具类
本实例将详细介绍如何在Android环境中使用HttpPost请求连接服务器,并处理相关的异常情况,如网络连接状态判断和请求超时。 首先,我们需要在Android应用中引入必要的库,通常我们会使用Apache HttpClient库来实现...
Android中使用HttpPost或OkHttp的RequestBody来发送POST请求。这里展示一个HttpPost的例子: ```java HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(...
在Android开发中,获取网络数据是常见的需求,通常我们通过HTTP协议发起GET或POST请求来实现。本教程将详细介绍如何在Android Studio中使用Java编写代码发起GET网络请求,适合初学者学习。 首先,理解GET请求的基本...
对于POST请求,需要设置`setDoOutput(true)`并使用`DataOutputStream`写入请求体。 2. **使用HttpClient** HttpClient是Apache HTTP组件的一部分,它提供了更高级别的API。下面是一个使用HttpClient的GET请求示例...
本文将深入探讨一个专为Android设计的网络请求框架,它支持GET、POST请求,具备图片上传功能,并且是基于OkHttp库进行封装的。 首先,GET和POST是HTTP协议中最常见的两种请求方法。GET主要用于获取资源,其参数通过...
总结,Android后台发送GET和POST请求主要涉及HTTP协议的使用、数据编码、网络请求库的选择以及异步处理。理解这些知识点对于开发能与服务器进行有效通信的Android应用至关重要。在处理过程中,要注意数据的安全性和...
Android拦截并获取WebView内部POST请求参数的实现方法 Android拦截并获取WebView内部POST请求参数的实现方法是指在Android应用程序中,拦截并获取WebView内部的POST请求参数。这种实现方法主要有两种方案:一种是...
在Android中,我们可以使用`HttpURLConnection`或者第三方库如`Volley`、`OkHttp`等来实现POST请求。这里我们以`HttpURLConnection`为例,介绍其基本用法: 1. **创建URL对象** 首先,我们需要创建一个`URL`对象,...
本示例"Android开发 okhttp网络请求使用demo,包括上传文件方法封装"将帮助开发者理解如何利用OkHttp进行网络请求,特别是文件上传的功能。 首先,我们来了解OkHttp的基本概念。OkHttp是由Square公司开发的一款HTTP...
对于POST请求,可以使用JsonObjectRequest或JsonArrayRequest,根据需要发送的数据类型选择: ```java JSONObject jsonObject = new JSONObject(); try { jsonObject.put("key", "value"); } catch (JSONException...
`TestHttpUrlCon`是Android客户端的Java类,它实现了使用`HttpURLConnection`发送POST请求的过程。以下是一些关键步骤: 1. **建立连接**:首先,你需要创建一个`URL`对象,传入服务器的URL地址,然后通过`open...