博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android--httpclient模拟post请求和get请求
阅读量:5842 次
发布时间:2019-06-18

本文共 4989 字,大约阅读时间需要 16 分钟。

HttpClient的使用模式:

1. 创建一个HttpClent

2.实例化新的HTTP方法,比如PostMethod 或 GetMethod

3.设置HTTP参数名称/值

4.使用HttpClent执行HTTP调用

5.处理Http响应

import java.io.IOException;import java.io.InputStream;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.StatusLine;import org.apache.http.client.ClientProtocolException;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 com.itheima.httpclient.utils.Utils;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {	Handler handler = new Handler(){		@Override		public void handleMessage(android.os.Message msg) {			Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();		}	};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    //get方法    public void get(View v){    	EditText et_name = (EditText) findViewById(R.id.et_name);    	EditText et_pass = (EditText) findViewById(R.id.et_pass);    	    	final String name = et_name.getText().toString();    	final String pass = et_pass.getText().toString();    	    	    	Thread t = new Thread(){    		@Override    		public void run() {    			String path = "http://192.168.13.13/Web/servlet/CheckLogin?name=" + URLEncoder.encode(name) + "&pass=" + pass;    	    	//使用httpClient框架做get方式提交    	    	//1.创建HttpClient对象    	    	HttpClient hc = new DefaultHttpClient();    	    	    	    	//2.创建httpGet对象,构造方法的参数就是网址    	    	HttpGet hg = new HttpGet(path);    	    	    	    	//3.使用客户端对象,把get请求对象发送出去    	    	try {    				HttpResponse hr = hc.execute(hg);    				//拿到响应头中的状态行    				StatusLine sl = hr.getStatusLine();    				if(sl.getStatusCode() == 200){    					//拿到响应头的实体    					HttpEntity he = hr.getEntity();    					//拿到实体中的内容,其实就是服务器返回的输入流    					InputStream is = he.getContent();    					String text = Utils.getTextFromStream(is);    					    					//发送消息,让主线程刷新ui显示text    					Message msg = handler.obtainMessage();    					msg.obj = text;    					handler.sendMessage(msg);    				}    			} catch (Exception e) {    				// TODO Auto-generated catch block    				e.printStackTrace();    			}    		}    	};    	t.start();    	    }    //post方法    public void post(View v){    	EditText et_name = (EditText) findViewById(R.id.et_name);    	EditText et_pass = (EditText) findViewById(R.id.et_pass);    	    	final String name = et_name.getText().toString();    	final String pass = et_pass.getText().toString();    	    	Thread t = new Thread(){    		@Override    		public void run() {    			String path = "http://192.168.13.13/Web/servlet/CheckLogin";    	    	//1.创建客户端对象    	    	HttpClient hc = new DefaultHttpClient();    	    	//2.创建post请求对象    	    	HttpPost hp = new HttpPost(path);    	    	    	    	//封装form表单提交的数据    	    	BasicNameValuePair bnvp = new BasicNameValuePair("name", name);    	    	BasicNameValuePair bnvp2 = new BasicNameValuePair("pass", pass);    	    	List
parameters = new ArrayList
(); //把BasicNameValuePair放入集合中 parameters.add(bnvp); parameters.add(bnvp2); try { //要提交的数据都已经在集合中了,把集合传给实体对象 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8"); //设置post请求对象的实体,其实就是把要提交的数据封装至post请求的输出流中 hp.setEntity(entity); //3.使用客户端发送post请求 HttpResponse hr = hc.execute(hp); if(hr.getStatusLine().getStatusCode() == 200){ InputStream is = hr.getEntity().getContent(); String text = Utils.getTextFromStream(is); //发送消息,让主线程刷新ui显示text Message msg = handler.obtainMessage(); msg.obj = text; handler.sendMessage(msg); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; t.start(); }}
Utils方法:

import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;public class Utils {	public static String getTextFromStream(InputStream is){				byte[] b = new byte[1024];		int len = 0;		ByteArrayOutputStream bos = new ByteArrayOutputStream();		try {			while((len = is.read(b)) != -1){				bos.write(b, 0, len);			}			String text = new String(bos.toByteArray());			bos.close();			return text;		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		return null;	}}

转载于:https://www.cnblogs.com/chaoyu/p/6436885.html

你可能感兴趣的文章
文件的散列与校验:.NET发现之旅(五)
查看>>
生产了十几年NAS的群晖,这次准备重新定义NAS
查看>>
大家都有的迷茫我也来了
查看>>
46次课(Nginx安装 、 默认虚拟主机、Nginx用户认证、Nginx域名重定向)
查看>>
c# 适配器模式的详细介绍
查看>>
windows2008支持多用户同时登录
查看>>
UEditor 1.2.5 for java 自定义配置
查看>>
js微模板引擎
查看>>
Gson转JSON字符串时候, 将时间转成Long型
查看>>
oral_quiz->#N个骰子的点数和#
查看>>
15、文本查看命令--cat、more、head、tail
查看>>
Oracle模糊查询的实现
查看>>
openstack oslo.config简短学习笔记
查看>>
访问url中存在中文,apache 重写出现403问题处理方案
查看>>
从Redis的数据丢失说起
查看>>
Kafka集群搭建详细步骤
查看>>
Mac os 10.9 Python MySQLdb
查看>>
理解对象(通过关联数组和基本包装类型)
查看>>
linux查看系统版本(32位/64位)的方法
查看>>
linux基础--awk文本分析工具详解
查看>>