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