Android中使用HttpClient框架进行get/post提交
来源:互联网 发布:ubuntu apt jdk1.8 编辑:程序博客网 时间:2024/05/22 01:46
使用HttpClient框架不需要去操作任何的字符串,而且用框架提交数据post请求头里的数据都是由框架自动生成,程序员只管提交数据,框架会根据你提交的数据大小/类型等不同自动生成post请求头里应该有的属性,而不需要自己操作字符串来生成,这样在开发中效率会更高,也更便于理解.
使用HttpClient框架进行GET提交
基本框架:
//使用httpClient框架做get方式提交 //1,创建HttpClient对象 HttpClient hc = new DefaultHttpClient(); //2,创建httpGet对象 HttpGet hg = new HttpGet(); try { //3,使用客户端对象把get请求发出去 hc.execute(hg); } catch (Exception e) { e.printStackTrace(); }
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://10.66.121.5/WebGet/servlet/LoginServlet?name=" +URLEncoder.encode(name) + "&pass=" + pass; //使用httpClient框架做get方式提交 //1,创建HttpClient对象 HttpClient hc = new DefaultHttpClient(); //2,创建httpGet对象,构造方法的参数就是网址 HttpGet hg = new HttpGet(path); try { //3,使用客户端对象把get请求发出去 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 Message msg = handler.obtainMessage(); msg.obj = text; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } } }; t.start(); }
使用HttpClient框架进行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://10.66.121.5/WebGet/servlet/LoginServlet"; //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<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>(); //把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); Message msg = handler.obtainMessage(); msg.obj = text; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } } }; t.start(); }
使用异步HttpClient框架进行GET提交
开源框架:https://github.com/loopj/android-async-http
ExampleUsage.java
public class ExampleUsage { public static void makeRequest() { AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { System.out.println(response); } }); }}
由此看来使用比较简单
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(); String url = "http://10.66.121.5/WebGet/servlet/LoginServlet?name=" +URLEncoder.encode(name) + "&pass=" + pass; //创建异步httpClient AsyncHttpClient ahc = new AsyncHttpClient(); //发送get请求提交数据 ahc.get(url, new MyResponseHandler()); } class MyResponseHandler extends AsyncHttpResponseHandler{ //请求服务器成功时,此方法会调用(注:不管密码对不对,只要响应码是200就调用) @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { Toast.makeText(MainActivity.this, new String(responseBody), 0).show(); } //请求失败此方法调用 @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { //此时responseBody是错误界面的源文件,因此可以简单弹一个"请求失败" Toast.makeText(MainActivity.this, "请求失败", 0).show(); } }
使用异步HttpClient框架进行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(); String url = "http://10.66.121.5/WebGet/servlet/LoginServlet"; //创建异步httpClient AsyncHttpClient ahc = new AsyncHttpClient(); //把要提交的数据封装至RequestParams对象 RequestParams params = new RequestParams(); params.add("name", name); params.add("pass", pass); //发送post请求提交数据 ahc.post(url, params, new MyResponseHandler()); }
0 0
- Android中使用HttpClient框架进行get/post提交
- Android-使用HttpClient框架提交数据(get/post)
- HttpClient使用Post和Get提交参数
- HttpClient使用Post和Get提交参数
- HttpClient使用Post和Get提交参数
- HttpClient使用get、post提交请求
- HttpClient使用Post和Get提交参数
- HttpClient使用Post和Get提交参数
- HttpClient使用Post和Get提交参数
- HttpClient使用Post和Get提交参数
- Android学习(52) -- 使用HttpClient框架做POST提交
- Android学习(51) -- 使用HttpClient框架做GET提交
- C#使用HttpClient进行GET&POST
- 使用HttpClient进行get和post请求
- Android 使用Post与Get方法进行表单提交数据
- Android中Okhttp进行get和post提交及数据请求的基本使用
- Android-异步HttpClient框架(get/post)
- Android中使用HttpClient 服务 GET,POST和上传
- java.nio.ByteBuffer用法小结
- 二维数组基础
- 线程、进程、多核心之间的关系
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
- VxWorks内核解读-2
- Android中使用HttpClient框架进行get/post提交
- Ext.Button的禁用 extjs 获取一个panel 如何禁用bbar中的按钮 或者将它隐藏掉??
- 认识相机
- Java三大框架之——Hibernate中的三种数据持久状态和缓存机制
- debug问题
- python绘制precision-recall曲线、ROC曲线
- Swift3 - 字符串的使用
- 测试用例设计经典面试题之电梯、杯子、笔、桌子、洗衣机、椅子、ATM等
- CentOS7 搭建Apache服务器