http 网络请求 下载图片
来源:互联网 发布:传智播客2016crm源码 编辑:程序博客网 时间:2024/06/05 03:33
访问网络最主要的也就是 http协议了。
http协议很简单,但是很重要。
直接上代码了,里面都是1个代码块 代码块的,用哪一部分直接拷出去用就好了。
1.访问网络用 get 和 post 自己组拼提交参数 ,httpclient 方式提交
2.上传 和 下载
<p>HttpClient有三个已知的实现类分别是:</p>
<p>AbstractHttpClient, AndroidHttpClient, DefaultHttpClient<br>
</p>
<p> AndroidHttpClient是对HttpClient的包装,内部带访问连接器,并设置为可以多线程使用,</p>
http协议很简单,但是很重要。
直接上代码了,里面都是1个代码块 代码块的,用哪一部分直接拷出去用就好了。
1.访问网络用 get 和 post 自己组拼提交参数 ,httpclient 方式提交
2.上传 和 下载
3.比如访问服务器后 返回来的 xml 和 json 的简单解析方法
<p>HttpClient其实是一个interface类型,HttpClient封装了对象需要执行的Http请求、身份验证、连接管理和其它特性</p><p>HttpClient有三个已知的实现类分别是:</p>
<p>AbstractHttpClient, AndroidHttpClient, DefaultHttpClient<br>
</p>
<p> AndroidHttpClient是对HttpClient的包装,内部带访问连接器,并设置为可以多线程使用,</p>
String path = "http://192.168.13.1"; String username ="ll"; String pwd="123"; /** get 组拼 */ public void httpGet() throws Exception { String param1 = URLEncoder.encode(username); String param2 = URLEncoder.encode(pwd); URL url = new URL(path + "?name=" + param1 + "&password=" + param2); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setReadTimeout(5000); // 数据并没有发送给服务器 // 获取服务器返回的流信息 InputStream in = conn.getInputStream(); byte[] result = StreamTool.getBytes(in); //return new String(result); } /** post 组拼 */ public void httpPost() throws Exception { URL url = new URL(path); String param1 = URLEncoder.encode(username); String param2 = URLEncoder.encode(pwd); //开始连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); String data = "username=" + param1 + "&password=" + param2; //设置方式 post conn.setRequestMethod("POST"); //timeout 5000 conn.setConnectTimeout(5000); // 设置 http协议可以向服务器写数据 conn.setDoOutput(true); // 设置http协议的消息头 conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Length", String.valueOf(data.length())); // 把我们准备好的data数据写给服务器 OutputStream os = conn.getOutputStream(); os.write(data.getBytes()); // httpurlconnection 底层实现 outputstream 是一个缓冲输出流 // 只要我们获取任何一个服务器返回的信息 , 数据就会被提交给服务器 , 得到服务器返回的流信息 int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); byte[] result = StreamTool.getBytes(is); String ss= new String(result); } } /** httpclient get */ public void httpClentGet () throws Exception{ //获取到一个浏览器的实例 HttpClient client = new DefaultHttpClient(); //准备请求的地址 String param1 = URLEncoder.encode(username); String param2 = URLEncoder.encode(pwd); HttpGet httpGet = new HttpGet(path + "?name=" + param1 + "&password=" + param2); //敲回车 发请求 HttpResponse ressponse = client.execute(httpGet); int code = ressponse.getStatusLine().getStatusCode(); if( code == 200){ InputStream is =ressponse.getEntity().getContent(); //byte[] result = StreamTool.getBytes(is); } } // 不需要的时候关闭 httpclient client.getConnectionManager().shutdown(); /** httpclient post **/ public void httpClentPost() throws Exception{ //1. 获取到一个浏览器的实例 HttpClient client = new DefaultHttpClient(); HttpPost httppost = new HttpPost(path); // 键值对 BasicNameValuePair List<namevaluepair> parameters = new ArrayList<namevaluepair>(); parameters.add(new BasicNameValuePair("username", username)); parameters.add(new BasicNameValuePair("pwd", pwd)); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8"); //3.设置post请求的数据实体 httppost.setEntity(entity); //4. 发送数据给服务器 HttpResponse ressponse = client.execute(httppost); int code = ressponse.getStatusLine().getStatusCode(); if(code == 200){ InputStream is =ressponse.getEntity().getContent(); byte[] result = StreamTool.getBytes(is); //return new String(result); } } /*** 下载一个东西 ***/ public void getFileData(Context context){ try { HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(path); //执行 HttpResponse ressponse = client.execute(httpGet); int code = ressponse.getStatusLine().getStatusCode(); if(code == HttpStatus.SC_OK){ InputStream in =ressponse.getEntity().getContent(); //图片 // Bitmap bitmap = BitmapFactory.decodeStream(in);// in.close(); //文件什么的比如读取了是要写在本地的 //小文件直接读取 大文件读取一点写一点 //byte[] result = StreamTool.getBytes(in); // //这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明 System.out.println(ressponse.getEntity().getContentType()); //可以判断是否是文件数据流 System.out.println(ressponse.getEntity().isStreaming()); //设置本地保存的文件 //File storeFile = new File("c:/0431la.zip"); String path="sdcard/aa.txt"; FileOutputStream output = context.openFileOutput(path, context.MODE_PRIVATE); //得到网络资源并写入文件 InputStream input = ressponse.getEntity().getContent(); byte b[] = new byte[1024]; int j = 0; while( (j = input.read(b))!=-1){ output.write(b,0,j); } output.flush(); output.close(); } } catch (Exception e) { // TODO: handle exception } } /** * 提交数据给服务器 带一个文件 * @param filepath 文件在手机上的路径 */ public void PostData(String filepath) throws Exception{ // 实例化上传数据的 数组 part [] username pwd Part[] parts = { new StringPart("username", username), new StringPart("pwd", pwd), new FilePart("file", new File(filepath)) }; PostMethod file_Post = new PostMethod(path); // 多种类型的数据实体 file_Post.setRequestEntity(new MultipartRequestEntity(parts, file_Post.getParams())); //创建 client org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient(); //timeout client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); //执行 int status = client.executeMethod(file_Post); if(status==200){ } } //传送文件 public void setFile() throws Exception{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://192.168.1.1"); File file = new File(path); InputStreamEntity reqEntity = new InputStreamEntity( new FileInputStream(file), -1); reqEntity.setContentType("binary/octet-stream"); reqEntity.setChunked(true); // FileEntity entity = new FileEntity(file, "binary/octet-stream"); httppost.setEntity(reqEntity); System.out.println("executing request " + httppost.getRequestLine()); HttpResponse response = httpclient.execute(httppost); if(response.getStatusLine().getStatusCode() == 200){ } } /** 1. * 一般访问了就会返回来1个 webservice * pull解析访问webservice 返回来的xml * **/ public void pullJX(byte[] bb) throws Exception{ // byte[] bb = EntityUtils.toByteArray(response.getEntity()); XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(new ByteArrayInputStream(bb), "UTF-8"); int event = pullParser.getEventType(); List<object> info; while(event != XmlPullParser.END_DOCUMENT){ switch (event) { case XmlPullParser.START_DOCUMENT: info = new ArrayList<object>(); break; case XmlPullParser.START_TAG: if("aa".equals(pullParser.getName())){ String id = pullParser.nextText().toString(); } break; case XmlPullParser.END_TAG: if("aa".equals(pullParser.getName())){ } break; } event = pullParser.next(); } } /**2. * 解析 json 数据 [{id:"001",name:"lilei",age:"20"},{id:"002",name:"zhangjia",age:"30"}] */ private static List parseJSON(InputStream in) throws Exception{ byte[] data = StreamTool.getBytes(in); String s =new String(data); // 转换成 json 数组对象 [{"001","ll","20"},{"002","zj","30"},] JSONArray json = new JSONArray(s); for (int i = 0; i < json.length() ; i++) { JSONObject j = json.getJSONObject(i); String aa1 = j.getString("id"); String aa2 = j.getString("name"); String aa3 = j.getString("age"); } return null; }
0 0
- http 网络请求 下载图片
- 请求网络下载图片
- http get 请求下载图片至本地
- Android HTTP请求下载图片并缓存
- android 通过http网络下载图片 并
- Android--通过Http下载网络图片
- Http URLConnector 下载一个网络图片
- 请求网络下载图片2(读取是否存在缓存图片)
- Android下载多个图片(传统Http请求方式)
- iOS源生HTTP网络请求(get/post)下载任务
- 使用Okhttp网络请求下载图片到指定文件夹
- Android HttpURLConnection获取网络下载图片POST请求方式
- Android Http下载请求
- http请求下载文件
- 网络请求以及网络请求下载图片的工具类 android开发java工具类
- Android-网络:Http下载二进制文件(歌曲、更新包、图片)
- Java使用Http实现网络图片的下载
- 图片的HTTP请求
- 多线程GCD的初步研究
- LINUX 命令大全
- noip2011 day1-3 Mayan游戏
- Cloud
- html学习 - jquery事件监听详解
- http 网络请求 下载图片
- Ugly Numbers UVA 136 priority_queue+set
- 连接一切
- pb操作Excel文件多个sheet(留存备查)
- CC4.4
- 【Jason's_ACM_解题报告】Boxes in a Line
- leetcode:Climbing Stairs菜鸟解法
- java 调用matlab
- Android_深入LinearLayout(第一季重制版)