当前位置: 首页 > news >正文

Android网络开发之HttpURLConnection

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

http是一个可靠的传输,建立在TCP/IP连接之上,缺省端口是80,其他端口号也可以用。Android可以用HttpURLConnection或HttpClient接口来开发http程序。

http通信使用最多的是Get和Post。Post和Get的不同之处在于Get的参数放在URL字串中,而Post的参数放在http请求数据中。

HttpURLConnection继承自URLConnection,都是抽象类,无法直接实例化对象。其对象主要通过URL的openConnection方法获得。

openConnection方法只创建URLConnection或HttpURLConnection实例,但是不进行真正的连接操作,并且每次openConnection都创建一个新的实例。

在连接之前,可以设置一些属性,比如超时时间等。

HttpURLConnection默认使用Get方法,如果要使用Post方法,则需要使用setRequestMethod方法。

// 示例代码:通过Post方式发送请求

URL url = new URL(“http://www.google.com”);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// 设置输入/出流

conn.setDoOutput(true);

conn.setDoInput(true);

// 设置请求方式为Post

conn.setRequestMethod(“POST”);

// Post请求不能使用缓存

conn.setUseCaches(false);

conn.setInstanceFollowRedirects(true);

// 设置Content-type

conn.setRequestProperty(“Content-Type”,“application/x-www-form-urlencoded”);

// 在调用getOutputStream时会隐式调用conn.connect()

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

String content = “name=” + URLEncoder.encode(“Jake”,“gb2312”);

dos.writeBytes(content);

dos.flush();

dos.close();

// 连接完成之后可以关闭这个连接

conn.disconnect();

 

// 示例代码:读取网页上的内容

InputStreamReader isr = new InputStreamReader(conn.getInputStream());

BufferedReader br = new BufferedReader(isr);

String line = null;

while(((line = br.readLine()) != null)) { … }

// 关闭连接

isr.close();

conn.disconnect();

 

// 示例代码:获取网络上的一张图片

conn.setDoInput(true);

conn.connect(); // 这条语句要不(待定)

InputStream is = conn.getInputStream();

// 将InputStream数据转换成Bitmap

Bitmap bitmap = BitmapFactory.decodeStream(is);

// 关闭数据流

is.close();

转载于:https://my.oschina.net/yolinfeng/blog/464334

相关文章:

  • nfs客户端进程变D,延伸linux的lock
  • 9 外观模式(Facade)
  • 线程的同步与死锁
  • 用TinySpider进行网页抓取实例
  • UI图像拖动更换
  • Mysql避免全表扫描sql查询优化 .
  • LR杂记 - 性能測试指标及经常使用的监控工具
  • linux常见问题汇总
  • jps命令
  • 招投标流程
  • 从零开始教你制作友善之壁TINY4412----SD卡uboot启动卡
  • Linux centos 连接网络
  • Action代理类的工作
  • 字符串中的转义字符与字符串的长度
  • 测试图片
  • 【Leetcode】101. 对称二叉树
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Babel配置的不完全指南
  • Js基础——数据类型之Null和Undefined
  • Puppeteer:浏览器控制器
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Service Worker
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Swoft 源码剖析 - 代码自动更新机制
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 官方解决所有 npm 全局安装权限问题
  • 警报:线上事故之CountDownLatch的威力
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 容器服务kubernetes弹性伸缩高级用法
  • 软件开发学习的5大技巧,你知道吗?
  • 详解NodeJs流之一
  • PostgreSQL之连接数修改
  • ###C语言程序设计-----C语言学习(6)#
  • #android不同版本废弃api,新api。
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)共用体union的用法举例
  • (solr系列:一)使用tomcat部署solr服务
  • (分布式缓存)Redis哨兵
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (转)EOS中账户、钱包和密钥的关系
  • ***详解账号泄露:全球约1亿用户已泄露
  • .apk 成为历史!
  • .libPaths()设置包加载目录
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Framework杂记
  • .Net FrameWork总结
  • @EnableWebMvc介绍和使用详细demo
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ 转载 ] SharePoint 资料
  • [Avalon] Avalon中的Conditional Formatting.
  • [bbk5179]第66集 第7章 - 数据库的维护 03