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" />
一、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);
%>