android_Http Get与Post

record。

1、Http的请求种类:
Get :通过请求URL得到资源
Post :用于向服务器提交新的内容
Put :用于修改某个内容
Delete :用于删除某个内容
Options :用于查看服务器的性能
Trace :用于远程诊断服务器
.......
在漫长的时间当中,其他的方法逐渐的退出了历史舞台,最常用的只剩下GET和POST方法。

2、Get与Post方法的区别
Get方法就好比一张明信片,只有请求头。而Post方法就好比一封信,有请求头和请求体。
-1-Get方法(幂等方法)用于从服务器取回数据,Post方法用于向服务器提交数据。
-2-使用Get方法向服务器提交的数据量较小,通常不超过2K;使用Post向服务器提交的数据量通常没有限制。
-3-Get请求是将所要提交的数据附在URL之后,而Post请求是将提交的数据放置在请求的请求体当中。
Get请求样例:http://192.168.1.100:8081/s02e14.jsp?name=away&pwd=123456

3、使用Get与Post向服务器发送数据的方法
xml:

    <EditText
        android:id="@+id/nameText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="username" />
    
    <EditText
        android:id="@+id/pwdText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/nameText"
        android:hint="password" />
    
    <Button 
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/pwdText"
        android:text="Login"/>
activity:
package com.away.b_10_httpgetandpost;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

	private EditText nameText;
	private EditText pwdText;
	private Button btn;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		nameText = (EditText) findViewById(R.id.nameText);
		pwdText = (EditText) findViewById(R.id.pwdText);
		btn = (Button) findViewById(R.id.btn);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String name = nameText.getText().toString();
				String pwd = pwdText.getText().toString();
				//使用POST方法向服务器发送请求
				PostThread pt = new PostThread(name, pwd);
				pt.start();
				//使用GET方法向服务器发送请求
				//GetThread gt = new GetThread(name, pwd);
				//gt.start();
			}
		});
	}

	// 该线程使用Post方法向服务器发送请求
	class PostThread extends Thread {
		String name;
		String pwd;

		public PostThread(String name, String pwd) {
			this.name = name;
			this.pwd = pwd;
		}

		@Override
		public void run() {
			HttpClient httpClient = new DefaultHttpClient();
			String url = "http://192.168.1.103:8080/get01.jsp";
			//生成使用POST方法的请求对象
			HttpPost httpPost = new HttpPost(url);
			// NameValuePair对象代表了一个需要发往服务器的键值对
			NameValuePair pair1 = new BasicNameValuePair("name", name);
			NameValuePair pair2 = new BasicNameValuePair("pwd", pwd);
			//将准备好的键值对对象放置在一个List当中
			ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
			pairs.add(pair1);
			pairs.add(pair2);
			//创建代表请求体的对象
			try {
				HttpEntity requestEntity = new UrlEncodedFormEntity(pairs);
				//将请求体放置在请求对象当中
				httpPost.setEntity(requestEntity);
				//执行请求对象
				try {
					HttpResponse response = httpClient.execute(httpPost);
					if (response.getStatusLine().getStatusCode() == 200) {
						HttpEntity entity = response.getEntity();
						BufferedReader reader = new BufferedReader(
								new InputStreamReader(entity.getContent()));
						String result = reader.readLine();
						Log.d("HTTP", "Post:" + result);
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	// 该线程使用Get方法向服务器发送请求
	class GetThread extends Thread {
		String name;
		String pwd;

		public GetThread(String name, String pwd) {
			this.name = name;
			this.pwd = pwd;
		}

		@Override
		public void run() {
			HttpClient httpClient = new DefaultHttpClient();
			String url = "http://192.168.1.103:8080/get01.jsp?name=" + name + "&pwd=" + pwd;
			HttpGet httpGet = new HttpGet(url);
			try {
				HttpResponse response = httpClient.execute(httpGet);
				if (response.getStatusLine().getStatusCode() == 200) {
					HttpEntity entity = response.getEntity();
					BufferedReader reader = new BufferedReader(
							new InputStreamReader(entity.getContent()));
					String result = reader.readLine();
					Log.d("HTTP", "Get:" + result);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
manifest:
<uses-permission android:name="android.permission.INTERNET" />
技术分享
技术分享
P.S:
一、Post提交数据的步骤:
-1-构造请求对象;
-2-将需要传递给服务器端的数据放置在键值对对象当中;
-3-将准备好的键值对放置在List当中;
-4-生成代表请求体的对象;
-5-将存有请求键值对的List对象放置在请求体对象当中;
-6-将请求体对象放置在请求对象当中;
-7-发送请求对象。

二、搭建本地服务器:
-1-下载Tomcat,配置系统变量JAVA_HOME的jdk的路径。如:E:\Java\jdk1.8.0_20
-2-运行tomcat/bin目录下的startup.bat。
-3-win+r》cmd》ipconfig,获知本机ip地址,在浏览器输入本机ip地址,看看配置是否成功。
-4-在tomcat/webapps/ROOT目录下,新建一个jsp页面,get01.jsp。

<%
    String name = request.getParameter("name");
    String pwd = request.getParameter("pwd");

    out.print("name:" + name + ",pwd:" + pwd);
%>
OK、

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。