基本使用方法

URLConnection

访问网络的文本数据打印下载

 try {//创建URL对象参数为网络信息地址URL url = new URL("https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/every_cookie_a70bc15.js");//使用URL对象获取URLConnection对象URLConnection connection = url.openConnection();//设置连接超时时间connection.setConnectTimeout(1000 * 8);//设置读取超时时间connection.setReadTimeout(1000 * 8);//获取输入流InputStream inputStream = connection.getInputStream();//字节数组输出流用于保存数据ByteArrayOutputStream baos = new ByteArrayOutputStream();//读取长度变量int len = 0;//换成数组byte[] buf = new byte[1024 * 8];//循环读取while ((len = inputStream.read(buf)) != -1) {//写入字节数组baos.write(buf, 0, len);}//打印下载数据System.out.println(baos.toString());//创建文件File file = new File("data.txt");//判断文件是否存在if (!file.exists()) {//不存在创建file.createNewFile();}//文本写入对象FileWriter fw = new FileWriter(file);//写入fw.write(baos.toString());//刷新fw.flush();//关闭fw.close();} catch (Exception e) {e.printStackTrace();}

访问网络图片下载

 try {//创建URL对象 参数为网络图片地址URL url = new URL("http://scimg.jb51.net/allimg/160805/103-160P5094351J6.jpg");//使用URL对象获取URLConnection对象URLConnection connection = url.openConnection();//设置连接超时时间connection.setConnectTimeout(1000 * 8);//设置读取超时时间connection.setReadTimeout(1000 * 8);//获取输入流InputStream inputStream = connection.getInputStream();int len = 0;//缓冲数组byte[] buf = new byte[1024 * 8];//创建文件对象File file = new File("1.jpg");//判断文件是否存在if (!file.exists()) {//如果不存在则创建文件file.createNewFile();}//文件输出流FileOutputStream fos = new FileOutputStream("1.jpg");while ((len = inputStream.read(buf)) != -1) {//写入文件流fos.write(buf, 0, len);//刷新流fos.flush();}//关闭流fos.close();} catch (Exception e) {e.printStackTrace();}

HttpURLConnection

使用方法基本与URLConnection相同

请求文本信息

   try {//穿件URL对象 参数为网络信息地址URL url = new URL("https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/every_cookie_a70bc15.js");//使用URL的openConnection获取HttpURLConnection 需要强转HttpURLConnection connection = (HttpURLConnection) url.openConnection();//设置请求方式 GET POST 都可以connection.setRequestMethod("GET");//设置连接超时时间connection.setConnectTimeout(1000 * 8);//设置读取超时时间connection.setReadTimeout(1000 * 8);//获取请求返回码int responseCode = connection.getResponseCode();//根据返回的结果码判断是否请求成功if (responseCode == 200) {//请求成功InputStream inputStream = connection.getInputStream();//临时读取数据String str = "";//保存数据String data = "";//读取请求的信息BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));//循环读取while ((str = br.readLine()) != null) {//保存数据data += str;}//打印读取数据System.out.println(data);} else {//请求失败System.out.println("Error" + responseCode);}} catch (Exception e) {e.printStackTrace();}

请求图片

  try {//创建URL对象 参数网络图片URL url = new URL("http://www.bz55.com/uploads1/allimg/120519/1_120519144644_5.jpg");//获取HttpURLConnection 对象HttpURLConnection connection = (HttpURLConnection) url.openConnection();//设置连接超时时间connection.setConnectTimeout(1000 * 8);//设置读取超时间connection.setReadTimeout(1000 * 8);//设置请求方式connection.setRequestMethod("GET");//回去请求返回码int responseCode = connection.getResponseCode();//判断返回码if (responseCode == 200) {//请求成功InputStream inputStream = connection.getInputStream();//文件输出流FileOutputStream fos = new FileOutputStream("12.jpg");int len = 0;//缓冲数组byte[] buf = new byte[1024 * 8];//循环读取while ((len = inputStream.read(buf)) != -1) {//写入fos.write(buf, 0, len);//刷新流fos.flush();}//关闭流fos.close();} else {//请求失败System.err.println("Error " + responseCode);}} catch (Exception e) {e.printStackTrace();}

Android 使用

(注意)在Android中不能再主线程中操作,否则NetworkOnMainThreadException

所以在Android 中要在子线程中做网络请求操作
在AndroidManifest.xml中声明

    <uses-permission android:name="android.permission.INTERNET"/>

否则会java.lang.SecurityException

代码

  //创建一个线程new Thread(new Runnable() {@Overridepublic void run() {try {//创建URL对象URL url = new URL("http://www.bz55.com/uploads1/allimg/120519/1_120519144644_5.jpg");//获取HttpURLConnectionHttpURLConnection connection = (HttpURLConnection) url.openConnection();//设置请求超时时间connection.setConnectTimeout(1000 * 8);//设置请求方式connection.setRequestMethod("GET");//回去请求返回码int responseCode = connection.getResponseCode();//判断是否请求成功if (responseCode == 200) {//获取流InputStream inputStream = connection.getInputStream();}} catch (Exception e) {e.printStackTrace();}}}).start();

URLConnection HttpURLConnection 网络请求相关推荐

  1. 基于HttpURLConnection 网络请求工具类的封装

    HttpUtils: /*** Created by xiaoyehai on 2018/5/21 0021.*/public class HttpUtils {//线程池private static ...

  2. 关于HttpUrlConnection网络请求之返回结果的中文乱码解决方法

    解决方法: 原使用 StringBuffer改为使用StringBuilder即可 /**                  * 获取响应码  200=成功                  * 当响 ...

  3. iOS中网络请求的使用(GET请求与POST请求)

    GET&POST GET和POST是两种最常用的与服务器进行交互的HTTP方法 GET 语意是获取指定URL的资源. 将数据按照variable=value的形式,添加到action所指向的U ...

  4. 微服系列之Feign使用HttpClient和OkHttp网络请求框架

    Feign实现了远程调用,底层默认使用的是HttpURLConnection网络请求框架 那Feign支不支持其他的网络请求框架呢,答案那是肯定的,Feign还支持HttpClient和OkHttp, ...

  5. java的connect和http_【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法

    Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...

  6. Android网络请求操作httpurlconnection和httpclient基本使用

    1.        网络请求操作中Get请求和Post请求有什么区别? 1)        Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求 2)        Get是获 ...

  7. HttpURLConnection 使用 Post 方式传递 Json 数据网络请求实例小记

    1.我新建了一个新项目,先添加权限: <uses-permission android:name="android.permission.INTERNET"/> 2.添 ...

  8. 通过java.net.URLConnection发送HTTP请求的方法

    2019独角兽企业重金招聘Python工程师标准>>> 1.GET与POST请求的区别 a) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, b) ...

  9. (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)

    前言: 以前看了些关于图片优化处理缓存比较全的视频(感谢慕风网),现在回顾觉得还是挺好的也就总结出来下,感觉针对图片做处理这块还真的用的比较多,本文章只要使用异步线程AsyncTask.自定义的Ima ...

最新文章

  1. 推荐11个构建和测试API的顶级工具
  2. ATLAS数学库编译
  3. Oracle 数据库的子查询(关联子查询)
  4. 9 WM配置-主数据-定义物料分阶段的范围(Staging Area)
  5. ArcGIS 计算挖填方区域和挖填方量
  6. Happy New Year!PR升3啦!
  7. 爱看小说网源码全站带数据打包ThinkPHP内核小说网站源码
  8. 2011英语二长难句
  9. uniapp 微信支付功能
  10. 机械硬盘 与 固态硬盘SSD
  11. SAP(十)报表程序
  12. OpenFOAM 张量运算
  13. C-lodop打印控件 实现批量打印
  14. 以太坊源码系列之miner解析(1)
  15. 【Spark Streaming】(四)基于 Spark Structured Streaming 的开发与数据处理
  16. 把 GPL 视作“病毒”?请停止污名化 GPL
  17. 收楼了心情忐忑不安,该花钱请验房师来验房吗?找一个验房师需要多少钱,验房标准价格是多少,验房师现场验收出二百多个问题值不值
  18. element-ui日期时间选择框picker-options如何禁用时间范围
  19. SQL时间函数应用(时间、季度、旬、月、星期)
  20. Linux用户态进程如何监控内存被写事件

热门文章

  1. 谷歌浏览器控制台如何切换中英文?
  2. 声网如何处理直播 SEI 相关问题?
  3. 微服务A读配置中心报Could not locate PropertySource错误
  4. 1 分钟抗住 10 亿请求!某些 App 怎么做到的?
  5. Windows Server 2022 发布(正式版下载)
  6. 【诡秘之主】封印物篇
  7. WebApi路由机制详解
  8. 3D游戏建模真的很累吗?前景怎么样?又需要哪样的基础
  9. matlab memory 代数环,matlab/simulink中代数环的问题及解决措施
  10. python爬虫美剧下载