博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android HttpClient
阅读量:6670 次
发布时间:2019-06-25

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

Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类。

下面分别讲一下怎么用HttpClient实现get,post请求。

1.Get 请求

HttpGet get = new HttpGet("http://www.baidu.com"); HttpClient hClient = new DefaultHttpClient(); httpResponse = hClient.execute(get);

2.Post 请求

Map
map = new HashMap
();map.put("id", id);map.put("name", name);map.put("permission", String.valueOf(permission)); List
list = new ArrayList
(); if(map != null && !map.isEmpty()){ for(Map.Entry
entry : map.entrySet()){
//迭代器 //键值对 NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue()); list.add(nameValuePair); } } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode);//使用post方式提交数据HttpPost post = new HttpPost(path);post.setEntity(entity);//请求体中//默认客户端HttpClient client = httpClient; HttpResponse httpResponse = client.execute(post);

3.代码实例:

先是get请求

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader;    import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.DefaultHttpClientConnection; import org.apache.http.impl.client.DefaultHttpClient;    import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;    public class MainActivity extends Activity {        private Button requestButton;     private HttpResponse httpResponse;     private HttpEntity entity;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         requestButton = (Button) findViewById(R.id.requestButton);                    requestButton.setOnClickListener(new OnClickListener() {                            public void onClick(View v) {                  new Thread(new Downtest()).start();             }         });     }    class Downtest implements Runnable{          public void run() {         //生成一个请求对象,请求             HttpGet get = new HttpGet("http://www.baidu.com");             //生成一个Http客户端对象             HttpClient hClient = new DefaultHttpClient();             //使用Http客户端发送请求对象             InputStream inputStream = null;             try {                 httpResponse = hClient.execute(get);//httpResponse返回的响应               //返回的响应数据就放在里边                                 entity = httpResponse.getEntity();                 inputStream = entity.getContent();                 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));                 String result = "";                 String line = "";                while((line = reader.readLine())!= null){                    result = result+ line;                }                System.out.println(result);             } catch (ClientProtocolException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }finally{                 try{                     inputStream.close();                 }catch(Exception e){                     e.printStackTrace();                 }             }      }    }        }

再是post请求

public class AccountHttpUtils {        //private static String PATH = "http://192.168.253.1:8088/CallName/servlet/AccountServler";     private static HttpClient httpClient;     public AccountHttpUtils(HttpClient httpClient) {            this.httpClient = httpClient;     }    public static String sendHttpClient(String path,Map
map,String encode){ List
list = new ArrayList
(); if(map != null && !map.isEmpty()){ for(Map.Entry
entry : map.entrySet()){
//迭代器 //键值对 NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue()); list.add(nameValuePair); } } try { //实现将请求的参数封装到表单中, UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode); //使用post方式提交数据 HttpPost post = new HttpPost(path); post.setEntity(entity);//请求体中 //默认客户端 HttpClient client = httpClient; HttpResponse httpResponse = client.execute(post); if(httpResponse.getStatusLine().getStatusCode() == 200){ HttpEntity httpEntity = httpResponse.getEntity(); InputStream inputStream = httpEntity.getContent(); return changeInputeStream(inputStream, encode); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } /** * 将一个输入流转换成字符串 * @param inputStream * @param encode * @return */ private static String changeInputeStream(InputStream inputStream,String encode) { //通常叫做内存流,写在内存中的 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; String result = ""; if(inputStream != null){ try { while((len = inputStream.read(data))!=-1){ data.toString(); outputStream.write(data, 0, len); } //result是在服务器端设置的doPost函数中的 result = new String(outputStream.toByteArray(),encode); outputStream.flush(); outputStream.close(); inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } public static String set(String id,String name,int permission) { // TODO Auto-generated method stub Map
map = new HashMap
(); map.put("id", id); map.put("name", name); map.put("permission", String.valueOf(permission)); String result = AccountHttpUtils.sendHttpClient(AbstractHttpUtils.PATH+"servlet/AccountServler", map, "utf-8"); System.out.println("result:"+ result); return result; } }

 4.get请求访问的是百度,返回的是百度首页的源代码

        post是我的一个小项目中的类 

转载地址:http://zdlxo.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
SQLServer 2008数据库计算机名更改
查看>>
Tkinter的消息对话框
查看>>
windows 远程桌面kali
查看>>
我的友情链接
查看>>
常见linux系统中RPM包的通用命名规则
查看>>
DELL LATITUDE E6320等笔记本不能识别移动硬盘
查看>>
Debian6.0.7的archive mirror列表真接地气
查看>>
让自己的程序支持CD刻录功能
查看>>
elasticsearch使用java api批量插入数据
查看>>
Linux系统新手学习的11点建议
查看>>
python开发支持万台设备的分布式监控软件视频教程
查看>>
手机上的html
查看>>
Spring整合Shiro做权限控制模块详细案例分析
查看>>
学号Linux的好帮手
查看>>
为 Asp.net 网站新增发送手机短信功能
查看>>
数值转换成Excel列名
查看>>
win7上mysql+apache+php的安装
查看>>
40多个关于人脸检测/识别的API、库和软件
查看>>
FTP协议的分析
查看>>