`
shaojiashuai123456
  • 浏览: 262814 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

android 使用post方法请求网址

 
阅读更多
	//访问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发起POST网络请求

    本文将详细讲解如何在Android Studio中使用Java语言和JSON数据格式实现POST请求,特别适合初学者学习。 **一、依赖库** 首先,我们需要引入必要的库,如OkHttp或Volley,它们可以帮助我们方便地发送网络请求。这里...

    android的post请求

    使用`execute()`方法执行POST请求,并通过`HttpResponse`获取服务器的响应。注意处理可能出现的异常。 ```java HttpResponse response; try { response = httpClient.execute(httpPost); } catch ...

    android原生post请求源码

    在Android开发中,进行网络通信是常见的需求,而POST请求是一种常用的数据提交方式。本教程将深入探讨如何在Android原生环境中实现POST请求,并通过源码解析来理解其工作原理。 首先,Android中的网络操作主要依赖...

    Android中Https请求get和post

    本篇将详细讲解Android中如何使用HTTPS进行GET和POST请求。 首先,HTTPS基于SSL/TLS协议,提供加密处理、服务器身份验证和消息完整性检查等功能。在Android中,我们通常会用到HttpURLConnection或者第三方库如...

    实例详解Android Webview拦截ajax请求

    Android Webview 拦截 Ajax 请求的详细讲解 Android Webview 提供了页面加载及资源请求的钩子,但是对于 H5 的 Ajax 请求并没有提供干涉的接口。这意味着我们不能在 Webview 中干涉 JavaScript 发起的 HTTP 请求,...

    android发送post请求获取json字符串

    在Android中,我们通常使用`HttpURLConnection`或者第三方库如Volley、OkHttp来实现POST请求。 1. 使用`HttpURLConnection`发送POST请求: - 首先,我们需要建立到服务器的连接,设置请求方法为POST,并开启允许...

    android 的OkHttp3网络的POST和GET请求

    以上就是关于Android的OkHttp3框架中GET和POST请求的基本使用方法,通过这个库,开发者可以高效、安全地进行网络通信。在实际项目中,可以根据需求进行更复杂的定制和优化,例如设置超时、重试策略等。希望这个概述...

    Android总GET/POST请求服务器

    2. POST请求在Android中的实现: 对于POST请求,除了上述两种方式外,还需要设置请求方法并添加请求头。如下所示: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = ...

    android发送get,post请求工具类

    android发送get,post请求工具类

    android HttpPost请求连接服务器端的实例

    本实例将详细介绍如何在Android环境中使用HttpPost请求连接服务器,并处理相关的异常情况,如网络连接状态判断和请求超时。 首先,我们需要在Android应用中引入必要的库,通常我们会使用Apache HttpClient库来实现...

    Android端使用get post 方法提交数据到服务器demo

    Android中使用HttpPost或OkHttp的RequestBody来发送POST请求。这里展示一个HttpPost的例子: ```java HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(...

    Android Studio发起GET网络请求

    在Android开发中,获取网络数据是常见的需求,通常我们通过HTTP协议发起GET或POST请求来实现。本教程将详细介绍如何在Android Studio中使用Java编写代码发起GET网络请求,适合初学者学习。 首先,理解GET请求的基本...

    简单的android http请求

    对于POST请求,需要设置`setDoOutput(true)`并使用`DataOutputStream`写入请求体。 2. **使用HttpClient** HttpClient是Apache HTTP组件的一部分,它提供了更高级别的API。下面是一个使用HttpClient的GET请求示例...

    android 网络请求框架,包涵get,post请求,图片上传,图片上传包涵表单上传,及基于okhttp封装的请求方法

    本文将深入探讨一个专为Android设计的网络请求框架,它支持GET、POST请求,具备图片上传功能,并且是基于OkHttp库进行封装的。 首先,GET和POST是HTTP协议中最常见的两种请求方法。GET主要用于获取资源,其参数通过...

    android 后台 get和post请求数据

    总结,Android后台发送GET和POST请求主要涉及HTTP协议的使用、数据编码、网络请求库的选择以及异步处理。理解这些知识点对于开发能与服务器进行有效通信的Android应用至关重要。在处理过程中,要注意数据的安全性和...

    Android拦截并获取WebView内部POST请求参数的实现方法

    Android拦截并获取WebView内部POST请求参数的实现方法 Android拦截并获取WebView内部POST请求参数的实现方法是指在Android应用程序中,拦截并获取WebView内部的POST请求参数。这种实现方法主要有两种方案:一种是...

    android采用post方式获取数据

    在Android中,我们可以使用`HttpURLConnection`或者第三方库如`Volley`、`OkHttp`等来实现POST请求。这里我们以`HttpURLConnection`为例,介绍其基本用法: 1. **创建URL对象** 首先,我们需要创建一个`URL`对象,...

    Android开发 okhttp网络请求使用demo,包括上传文件方法封装

    本示例"Android开发 okhttp网络请求使用demo,包括上传文件方法封装"将帮助开发者理解如何利用OkHttp进行网络请求,特别是文件上传的功能。 首先,我们来了解OkHttp的基本概念。OkHttp是由Square公司开发的一款HTTP...

    Volley使用,包含get、post请求,获取String/JsonObject/JsonArray数据(android客户端+java服务器端)

    对于POST请求,可以使用JsonObjectRequest或JsonArrayRequest,根据需要发送的数据类型选择: ```java JSONObject jsonObject = new JSONObject(); try { jsonObject.put("key", "value"); } catch (JSONException...

    Android httpUrlConnection Post方式访问网络简单demo

    `TestHttpUrlCon`是Android客户端的Java类,它实现了使用`HttpURLConnection`发送POST请求的过程。以下是一些关键步骤: 1. **建立连接**:首先,你需要创建一个`URL`对象,传入服务器的URL地址,然后通过`open...

Global site tag (gtag.js) - Google Analytics