`

Android通过http协议数据交互的两种方式

阅读更多

方式一:HttpPost(import org.apache.http.client.methods.HttpPost)

 

	private Button button1, button2, button3;
	private TextView textView1;

	button1.setOnClickListener(new Button.OnClickListener() {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
		// URLַ
		// String uriAPI =
		// "http://www.dubblogs.cc:8751/Android/Test/API/Post/index.php";
		String uriAPI = "http://172.20.0.206:8082//TestServelt/login.do";
		/* 建立HTTP Post连线 */
		HttpPost httpRequest = new HttpPost(uriAPI);
		// Post运作传送变数必须用NameValuePair[]阵列储存
		// 传参数 服务端获取的方法为request.getParameter("name")
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("name", "this is post"));
		try {

			// 发出HTTP request
			httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
			// 取得HTTP response
			HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);

			// 若状态码为200 ok
			if (httpResponse.getStatusLine().getStatusCode() == 200) {
				// 取出回应字串
				String strResult = EntityUtils.toString(httpResponse.getEntity());
				textView1.setText(strResult);
			} else {
				textView1.setText("Error Response" + httpResponse.getStatusLine().toString());
			}
		} catch (ClientProtocolException e) {
			textView1.setText(e.getMessage().toString());
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			textView1.setText(e.getMessage().toString());
			e.printStackTrace();
		} catch (IOException e) {
			textView1.setText(e.getMessage().toString());
			e.printStackTrace();
		}
	}

});

 

方式二:HttpURLConnection、URL(import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;)

 

private void httpUrlConnection() {
	try {
		String pathUrl = "http://172.20.0.206:8082/TestServelt/login.do";
		// 建立连接
		URL url = new URL(pathUrl);
		HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

		// //设置连接属性
		httpConn.setDoOutput(true);// 使用 URL 连接进行输出
		httpConn.setDoInput(true);// 使用 URL 连接进行输入
		httpConn.setUseCaches(false);// 忽略缓存
		httpConn.setRequestMethod("POST");// 设置URL请求方法
		String requestString = "客服端要以以流方式发送到服务端的数据...";

		// 设置请求属性
		// 获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
		byte[] requestStringBytes = requestString.getBytes(ENCODING_UTF_8);
		httpConn.setRequestProperty("Content-length", "" + requestStringBytes.length);
		httpConn.setRequestProperty("Content-Type", "application/octet-stream");
		httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
		httpConn.setRequestProperty("Charset", "UTF-8");
		//
		String name = URLEncoder.encode("黄武艺", "utf-8");
		httpConn.setRequestProperty("NAME", name);

		// 建立输出流,并写入数据
		OutputStream outputStream = httpConn.getOutputStream();
		outputStream.write(requestStringBytes);
		outputStream.close();
		// 获得响应状态
		int responseCode = httpConn.getResponseCode();
		if (HttpURLConnection.HTTP_OK == responseCode) {// 连接成功

			// 当正确响应时处理数据
			StringBuffer sb = new StringBuffer();
			String readLine;
			BufferedReader responseReader;
			// 处理响应流,必须与服务器响应流输出的编码一致
			responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), ENCODING_UTF_8));
			while ((readLine = responseReader.readLine()) != null) {
				sb.append(readLine).append("\n");
			}
			responseReader.close();
			tv.setText(sb.toString());
		}
	} catch (Exception ex) {
		ex.printStackTrace();
	}
}

 补充:

标准的http post传输方式,以上面为例子,如下:

requestStringBytes =“customerId=3461&nickName=黄&email=linafei1111@163.com&areaCode=0592&cityCode=350200&registerPhone=18906051120服务端通过getParamer("customerId")获取。

如果把参数值放在URL,例如http://172.20.0.206:8082/TestServelt/login.do?customerId=3461&nickName=黄&email=linafei1111@163.com&areaCode=0592&cityCode=350200&registerPhone=18906051120

虽然是以post方式传输,但是实际上还是以get方式提交

 

 

分享到:
评论
1 楼 webczw 2012-07-09  
不错,学习

相关推荐

    详解Android客户端与服务器交互方式

    最近的Android项目开发过程中一个问题困扰自己很长时间,...而下面的几种方式就是从这两种协议扩展出来的:webservices soap、SSH的JSON(可参考:该链接)、xmlrpc(wordpress for android)…… Socket 不推荐 ,HTTP

    Android平台手机访问Web服务器的有效数据交互方法

    Android平台上的应用程序不仅能够提供丰富的本地功能,还能通过网络与Web服务器进行数据交互,从而实现更广泛的功能和服务。然而,如何在Android平台上有效地与Web服务器进行数据交互,特别是在提取和解析不同类型...

    Android与服务器端数据交互[整理].pdf

    HTTP 协议和WebService 是两种常见的数据交互方式。 HTTP协议 在上一节中,我们使用 HTTP 协议和 HttpClient 向服务器端请求数据。HTTP 协议是一种基于请求/响应模式的协议,客户端通过发送请求到服务器端,然后...

    Android客户端与服务器端的json数据交互(内含大量知识点)

    在Android应用开发中,客户端与服务器端的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本教程将详细阐述Android客户端如何使用JSON进行数据交互,包括...

    简单的Http方式服务器与 android客户端的交互Demo

    本文将深入讲解如何使用HTTP(超文本传输协议)实现简单的服务器与Android客户端的交互,以"简单的Http方式服务器与Android客户端的交互Demo"为例。 首先,我们要理解HTTP的基础。HTTP是一种应用层协议,用于从Web...

    Android客户端与服务器数据交互流程样本.doc

    在Android客户端与服务器之间的数据交互过程中,主要涉及网络通信、HTTP协议、TCP/IP基础以及数据传输的安全性。以下是对这些知识点的详细说明: 1. **网络通信基础**:Android客户端与服务器之间的通信通常基于TCP...

    Android客户端访问服务器的一种数据交互方法

    本文介绍了一种基于Android客户端与服务器之间数据交互的方法,通过具体的技术细节和案例分析,展示了如何有效地实现数据的获取与展示。这种方法不仅能够提高移动应用的性能和用户体验,还能够帮助企业更好地利用...

    Android手机访问服务器的一种数据交互方法.pptx

    数据传输通常包括GET和POST两种方式,其中GET请求适用于获取数据,而POST请求适用于上传数据。 3. 接收数据 接收服务器响应的数据是数据交互的另一个关键步骤。Android应用程序可以通过解析HTTP响应来获取服务器...

    Android客户端与服务器数据交互流程.pdf

    HTTP协议基于TCP/IP协议,提供了可靠的数据传输,如GET和POST两种主要请求方法。GET方法将请求参数附加在URL中,适合请求少量、非敏感数据;POST方法将参数放在请求体中,更适合传输大量或敏感信息。 2. **使用...

    Android手机访问服务器的一种数据交互方法

    在Android应用开发中,可以使用多种方式来实现与服务器的数据交互,其中`HttpPost`是使用HTTP协议中POST方法的一个具体实现。下面详细介绍如何使用`HttpPost`实现客户端与服务器之间的数据交互: 1. **引入相关依赖...

    Android中http协议上传文件

    HTTP请求方法主要有GET和POST两种,它们在上传文件时有着不同的应用场景: - **GET**:通常用于获取资源,参数通过URL传递。由于URL长度限制,GET方式一般适用于参数较少且数据量较小的情况。 - **POST**:用于向...

    Android客户端和服务器端数据交互Demo03.zip

    首先,Android客户端与服务器端的数据交互通常基于HTTP或HTTPS协议,利用网络库如OkHttp、Volley或Retrofit来发起网络请求。OkHttp以其高效和易用性被广泛应用,Volley则提供了更便捷的异步处理,而Retrofit则是通过...

    Android通过get,post方式客户端与服务器端交互实例

    在Android应用开发中,与服务器进行数据交互是常见的需求,主要通过HTTP协议实现。HTTP(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议,它是万维网(WWW)的基础,允许...

    Android客户端与服务器端交互

    本知识点主要聚焦于Android客户端如何与服务器端进行有效的通信,通过IDEA和Eclipse这两种常用的Android开发环境来阐述。 首先,Android客户端与服务器端交互的基本方式主要有HTTP和HTTPS协议,这里提到了...

    Android和Html5交互的demo

    Android为WebView提供了两种客户端对象,WebChromeClient处理与用户界面相关的事件,如进度更新、JavaScript对话框等;而WebViewClient则负责页面加载的生命周期管理,如加载开始、完成、错误处理等。根据需要,...

    Android与Web端交互源码

    在移动应用开发中,Android平台经常需要与Web端进行数据交互,以便实现用户界面与服务器数据的同步。这个"Android与Web端交互源码"是一个非常实用的学习资源,特别是对于初学者来说,它能帮助理解如何在Android应用...

    Android与Asp.Net交互

    总之,Android与Asp.Net交互主要依赖于Json作为数据交换格式,通过各种Json处理库和网络请求库,实现了两端的数据通信。在实际开发中,需要注意安全性和性能优化,确保应用的稳定性和用户体验。

    android httpclient文件上传 http协议post get方法向服务器传输数据

    通过学习和理解这些代码,开发者可以更好地掌握如何在Android应用中利用HTTPClient与服务器进行数据交互。 总结来说,本项目通过具体的代码示例,深入浅出地介绍了Android中HTTPClient的使用,包括GET和POST请求的...

    android与php或.net交互demo

    在移动应用开发中,Android平台经常需要与服务器端进行数据交互,实现远程数据的获取、存储等功能。这里的"android与php或.net交互demo"是一个典型的案例,它展示了Android客户端如何与PHP或.NET后端服务器通过HTTP...

Global site tag (gtag.js) - Google Analytics