Android网络编程之Http通信

  1. //使用HttpURLConnection打开连接

2.HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

  1. //得到读取的内容(流)

4.InputStreamReader in = new InputStreamReader(urlConn.getInputStream());

  1. // 为输出创建BufferedReader

  2. BufferedReader buffer = new BufferedReader(in); 7. String inputLine = null;

  3. //使用循环来读取获得的数据

  4. while (((inputLine = buffer.readLine()) != null))

  5. {

  6. //我们在每一行后面加上一个"\n"来换行

  7. resultData += inputLine + “\n”;

  8. }

  9. //关闭InputStreamReader

  10. in.close();

  11. //关闭http连接

  12. urlConn.disconnect();

如果需要使用POST方式,则需要setRequestMethod设置。代码如下:

1.String httpUrl = “http://192.168.1.110:8080/httpget.jsp”;

  1. //获得的数据

  2. String resultData = “”;

  3. URL url = null;

  4. try

  5. {

  6. //构造一个URL对象

  7. url = new URL(httpUrl);

  8. }

  9. catch (MalformedURLException e)

  10. {

  11. Log.e(DEBUG_TAG, “MalformedURLException”);

  12. }

  13. if (url != null)

  14. {

  15. try

  16. {

  17. // 使用HttpURLConnection打开连接

  18. HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

  19. //因为这个是post请求,设立需要设置为true

  20. urlConn.setDoOutput(true);

  21. urlConn.setDoInput(true);

  22. // 设置以POST方式

  23. urlConn.setRequestMethod(“POST”);

  24. // Post 请求不能使用缓存

  25. urlConn.setUseCaches(false);

  26. urlConn.setInstanceFollowRedirects(true);

  27. // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的

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

  29. // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,

  30. // 要注意的是connection.getOutputStream会隐含的进行connect。

  31. urlConn.connect();

  32. //DataOutputStream流

34.DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());

  1. //要上传的参数

36.String content = “par=” + URLEncoder.encode(“ABCDEFG”, “gb2312”);

  1. //将要上传的内容写入流中

  2. out.writeBytes(content);

  3. //刷新、关闭

  4. out.flush();

  5. out.close();

2. HttpClient接口

使用Apache提供的HttpClient接口同样可以进行HTTP操作。

对于GET和POST请求方法的操作有所不同。GET方法的操作代码示例如下:

  1. // http地址

2.String httpUrl = “http://192.168.1.110:8080/httpget.jsp?par=HttpClient_android_Get”;

  1. //HttpGet连接对象

  2. HttpGet httpRequest = new HttpGet(httpUrl);

  3. //取得HttpClient对象

  4. HttpClient httpclient = new DefaultHttpClient();

  5. //请求HttpClient,取得HttpResponse

8.HttpResponse httpResponse = httpclient.execute(httpRequest);

  1. //请求成功

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)

  1. {

  2. //取得返回的字符串

  3. String strResult = EntityUtils.toString(httpResponse.getEntity());

  4. mTextView.setText(strResult);

  5. }

  6. else

  7. {

  8. mTextView.setText(“请求错误!”);

  9. }

  10. }

使用POST方法进行参数传递时,需要使用NameValuePair来保存要传递的参数。,另外,还需要设置所使用的字符集。代码如下所示:

  1. // http地址

  2. String httpUrl = “http://192.168.1.110:8080/httpget.jsp”;

  3. //HttpPost连接对象

  4. HttpPost httpRequest = new HttpPost(httpUrl);

  5. //使用NameValuePair来保存要传递的Post参数

  6. List params = new ArrayList();

  7. //添加要传递的参数

  8. params.add(new BasicNameValuePair(“par”, “HttpClient_android_Post”));

  9. //设置字符集

  10. HttpEntity httpentity = new UrlEncodedFormEntity(params, “gb2312”);

  11. //请求httpRequest

  12. httpRequest.setEntity(httpentity);

  13. //取得默认的HttpClient

  14. HttpClient httpclient = new DefaultHttpClient();

  15. //取得HttpResponse

  16. HttpResponse httpResponse = httpclient.execute(httpRequest);

  17. //HttpStatus.SC_OK表示连接成功

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)

  1. {

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取
果低效漫长且无助**。

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-fX2spRJ5-1718994024507)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/731635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用户态协议栈04-定时arp-table的实现

之前有写过arp reply的实现,其中有写道,我们的系统内核中会维护一张ARP表,可以通过终端arp -a查看: 其中的dynamic和static是动态arp的类型,之前的udp实验就是添加了一条静态arp达到了发送的目的。在我们需要发送一个数…

android在线阅读代码网站

android在线阅读代码社区: Android 1.6 到 Android 10 的源码: Android OS 在线源代码 - https://www.androidos.net.cn10.0.0_r6 - Android社区 - https://www.androidos.net.cn/ AndroidXRef https://cs.android.com/ https://cs.android.com/android…

FFmpeg源码:AV_RB32宏定义分析

一、AV_RB32宏定义的作用 AV_RB32是FFmpeg源码中经常出现的一个宏,其定义如下: #ifndef AV_RB32 # define AV_RB32(p) AV_RB(32, p) #endif 该宏定义有多层。把它简化为函数,其函数声明可以等价于: uint32_t AV_RB32(uint…

【尚庭公寓SpringBoot + Vue 项目实战】移动端找房功能(二十一)

【尚庭公寓SpringBoot Vue 项目实战】移动端找房功能(二十一) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】移动端找房功能(二十一)1、业务介绍2、接口开发2.1、地区信息2.2、获取全部支付方式列表2.3、房间信息2.2.1. 根据条…

Android翻转动画(卡片翻转效果)

前言 最近好友问计蒙翻转动画,恰好在大二那年看Android Api Demo时记了笔记,由此写一篇文章。 需求 屏幕右滑事件触发卡片的翻转效果 ,为了方便,在例子中将右滑事件改成按钮点击事件 老规矩,最后有源码 一、先介绍三…

算法金 | 奇奇怪怪的正则化

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 开篇引言正则化定义正则化通俗理解正则化类型 L1正则化(Lasso回归) L2正则化(Ridge回归&#xff09…

[C++][数据结构][跳表]详细讲解

目录 0.什么是跳表?1.SkipList的优化思路2.SkipList的效率如何保证?3.SkipList实现4.SkipList VS 平衡搜索树 && Hash 0.什么是跳表? SkipList本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树…

网络安全:Web 安全 面试题.(SQL注入)

网络安全:Web 安全 面试题.(SQL注入) 网络安全面试是指在招聘过程中,面试官会针对应聘者的网络安全相关知识和技能进行评估和考察。这种面试通常包括以下几个方面: (1)基础知识:包括网络基础知识、操作系…

php,python aes加密反解

1. python版本 import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpadclass AESUtilCBC:def __init__(self, key, iv):self.key key.encode(utf-8)self.iv iv.encode(utf-8)self.pad_length AES.block_sizedef encrypt(self, data):try…

WPF文本绑定显示格式StringFormat设置-特殊格式时间日期和多数据绑定

WPF文本绑定显示格式StringFormat设置 特殊格式设置日期/时间使用系统默认样式自定义格式: 绑定多个属性(多重绑定)多重绑定中的特殊字符示例: 特殊格式设置 在Textblock等文本控件中,我们经常要显示一些日期和时间&a…

第3章 小功能大用处-发布订阅

Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以收到该消息。 命令:Red…

AI落地不容乐观-从神话到现实

开篇 在这儿我不是给大家泼冷水,而是我们一起来看一下从2022年11月左右GPT3.0掀起了一股“AI狂潮”后到现在,AI在商用、工业、军用下到底有没有得到了大规模应用呢? 这个答案每一个参与者其实心里有数那就是:没有。 但是呢它的…

win10修改远程桌面端口号,在Windows 10中修改远程桌面端口号的步骤

在Windows 10中,远程桌面服务(Remote Desktop Services, RDS)允许用户从远程位置访问和操作计算机。默认情况下,远程桌面协议(RDP)使用端口3389进行通信。然而,出于安全考虑,管理员可…

时序预测 | Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测; 2.多变量时间序列数据集(负荷数据集),采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&…

Mac安装多个jdk环境(jdk8+jdk17)保姆级

Mac安装多个jdk环境(jdk8jdk17)保姆级 背景:新机安装开发环境发现需要找很多文章,,,,这里一篇文章安装所有环境 文章目录 Mac安装多个jdk环境(jdk8jdk17)保姆级&#x1f…

异步FIFO

目录 描述 输入描述: 输出描述: 参考代码 描述 请根据题目中给出的双口RAM代码和接口描述,实现异步FIFO,要求FIFO位宽和深度参数化可配置。 电路的接口如下图所示。 双口RAM端口说明: 端口名 I/O 描述 wclk i…

微信小程序简易录音机

首先先创建一个项目&#xff08;想必大家都会啦那就直接开干&#xff09; 首先上html结构 <view class"wx-container"><view id"title">录音机</view><view id"time">{{hours}}:{{minute}}:{{second}}</view>&l…

锐捷统一上网行为管理与审计系统 static_convert.php 前台RCE漏洞复现

0x01 产品简介 锐捷统一上网行为管理与审计RG-UAC系列是星网锐捷网络有限公司自主研发的上网行为管理与审计产品,具备的上网行为日志审计功能,能够全面、准确、细致的审计并记录多种上网行为日志,包括网页、搜索、外发文件、邮件、论坛、IM等等,并对日志数据进行统计分析,…

React的服务器端渲染(SSR)和客户端渲染(CSR)有什么区别?

React的服务器端渲染&#xff08;SSR&#xff09;和客户端渲染&#xff08;CSR&#xff09;是两种不同的页面渲染方式&#xff0c;它们各自有不同的特点和适用场景&#xff1a; 服务器端渲染&#xff08;SSR&#xff09; 页面渲染: 页面在服务器上生成&#xff0c;然后将完整的…