博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android----HttpClient的get,post和图片上传服务器
阅读量:6322 次
发布时间:2019-06-22

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

  hot3.png

HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。

HttpClient:是一个接口.

特性:

1. 基于标准、纯净的java语言。实现了Http1.0和Http1.1

2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。

3. 支持HTTPS协议。

4. 通过Http代理建立透明的连接。

5. 利用CONNECT方法通过Http代理建立隧道的https连接。

6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。

7. 插件式的自定义认证方案。

8. 便携可靠的套接字工厂使它更容易的使用第三方解决方案。

9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。

10. 自动处理Set-Cookie中的Cookie。

11. 插件式的自定义Cookie策略。

12. Request的输出流可以避免流中内容直接缓冲到socket服务器。

13. Response的输入流可以有效的从socket服务器直接读取相应内容。

14. 在http1.0和http1.1中利用KeepAlive保持持久连接。

15. 直接获取服务器发送的response code和 headers。

16. 设置连接超时的能力。

17. 实验性的支持http1.1 response caching。

18. 源代码基于Apache License 可免费获取。 

 

案例效果图:

 

 

             

 

public class MainActivity extends Activity implements OnClickListener {	public static String urls = "http://gpj.zhangwoo.cn/app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1";	private TextView mTextView;	private ImageView imagegvoew;	String resultStr = "";	String resultStr1 = "";	private Bitmap mBitmap = null;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		initView();	}	private void initView() {		findViewById(R.id.btn1).setOnClickListener(this);		findViewById(R.id.btn2).setOnClickListener(this);		findViewById(R.id.btn3).setOnClickListener(this);		findViewById(R.id.btn4).setOnClickListener(this);		mTextView = (TextView) findViewById(R.id.Text);		imagegvoew = (ImageView) findViewById(R.id.imagegvoew);	}	@Override	public void onClick(View v) {		switch (v.getId()) {		case R.id.btn1:			Thread visitBaiduThread = new Thread(new VisitWebRunnable());			visitBaiduThread.start();			try {				visitBaiduThread.join();				if (!resultStr.equals("")) {					mTextView.setText(resultStr);				}			} catch (InterruptedException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}			break;		case R.id.btn2:			Thread visitBaiduThreads = new Thread(new VisitWebRunnables());			visitBaiduThreads.start();			try {				visitBaiduThreads.join();				if (!resultStr1.equals("")) {					mTextView.setText(resultStr1);				}			} catch (InterruptedException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}			break;		case R.id.btn3:			new DownImgAsyncTask()					.execute("http://avatar.csdn.net/8/6/0/2_dickyqie.jpg");			break;		case R.id.btn4:			//Util.addFile("url");//图片路径			break;		default:			break;		}	}	/** 这里重写handleMessage方法,接受到子线程数据后更新UI **/	private Handler handler = new Handler() {		@Override		public void handleMessage(Message msg) {			switch (msg.what) {			case 1:				// 关闭				imagegvoew.setImageBitmap(mBitmap);				break;			}		}	};	class DownImgAsyncTask extends AsyncTask
{ @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } @Override protected Bitmap doInBackground(String... params) { // TODO Auto-generated method stub Bitmap b = Util.getImageBitmap(params[0]); return b; } @Override protected void onPostExecute(Bitmap result) { // TODO Auto-generated method stub super.onPostExecute(result); if (result != null) { imagegvoew.setImageBitmap(result); } } } /*** * get * * @author zq * */ class VisitWebRunnable implements Runnable { @Override public void run() { // TODO Auto-generated method stub HttpClient httpCLient = new DefaultHttpClient(); // 创建get请求实例 HttpGet httpget = new HttpGet("http://www.baidu.com"); try { HttpResponse response = httpCLient.execute(httpget); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String result = EntityUtils.toString(response.getEntity(), "UTF-8"); resultStr = result; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /*** * Post * * @author zq * */ class VisitWebRunnables implements Runnable { @Override public void run() { // TODO Auto-generated method stub List
formparams = new ArrayList
(); formparams.add(new BasicNameValuePair("c", "member")); formparams.add(new BasicNameValuePair("a", "getdepartments")); HttpClient client = null; HttpPost request = null; try { client = new DefaultHttpClient(); request = new HttpPost(urls); request.setEntity(new UrlEncodedFormEntity(formparams, HTTP.UTF_8)); HttpResponse response = client.execute(request); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String result = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(result); resultStr1 = result; } } catch (IOException e) { e.printStackTrace(); } } }}

记得加网络权限

完成以上功能需要  ,     点击下载即可

 

源码点击下载:

转载于:https://my.oschina.net/zhangqie/blog/803580

你可能感兴趣的文章
Factorialize a Number
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
一些实用性的总结与纠正
查看>>
自动生成四则运算题目
查看>>
git回退到某个历史版本
查看>>
HTML5基础(二)
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
查看>>
Echart:前端很好的数据图表展现工具+demo
查看>>
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>