网络
文章平均质量分 84
Luckie stone
Android应用开发。
展开
-
一个HTTP打趴80%面试者
起因面试官:请问你了解HTTP协议吗?前端开发:这不是应该后端清楚的吗?后端开发:这不是前端知道的吗?面试官:……我们先一本正经的来了解下HTTP(不包含传输层TCP),然后总结其中的精华回复面试官。HTTP协议简介HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2) 协议 协议规定了通...转载 2019-07-04 07:00:33 · 194 阅读 · 0 评论 -
https 双向认证开发实践
https双向认证 证书如何使用一.概念介绍1.https协议介绍 与http协议的区别https协议简单来说就是http协议的基础上增加了SSL协议 ,从而来保证数据传输的安全性。SSL协议:SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上...转载 2019-06-09 09:23:06 · 843 阅读 · 0 评论 -
SSL认证:单向认证与双向认证
SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用非对称加密,链路建立好之后,SSL对传输内容使用对称加密。对称加密:速度高,可加密内容较大,用来加密会话过程中的消息公钥加密:加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥一、SSL单向认证过程1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等...转载 2019-06-09 09:22:55 · 562 阅读 · 0 评论 -
Https单向认证和双向认证
一、HttpHyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。使用TCP端口为:80二、HttpsHyper Text Transfer Protocol over Secure Socket Layer,安全...转载 2019-05-01 16:16:10 · 409 阅读 · 0 评论 -
TCP、UDP、IP详解
一.计算机网络体系结构1.1 不同网络层对应的协议1.2 体系分层介绍五层协议应用层 :为特定应用程序提供数据传输服务;Telnet: 远程登录。FTP :文件传输协议。SMTP: 简单邮件传送协议。SNMP :简单网络管理协议。传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。T C P:传输控制协议 (面...转载 2019-03-17 13:27:29 · 1645 阅读 · 0 评论 -
Cookie介绍及在Android中的使用总结
Cookie介绍cookie的起源早期Web开发面临的最大问题之一是如何管理状态。简言之,服务器端没有办法知道两个请求是否来自于同一个浏览器。那时的办法是在请求的页面中插入一个token,并且在下一次请求中将这个token返回(至服务器)。这就需要在form中插入一个包含token的隐藏表单域,或着在URL的qurey字符串中传递该token。这两种办法都强调手工操作并且极易出错。Lou ...转载 2019-03-16 09:26:46 · 1402 阅读 · 0 评论 -
Http中Cookie详解以及Android中操作Cookie
一. 关于Cookie一句话概括就是:cookie就是一系列的键值对组成的字符串二. Cookie的最常用场景登录状态的判定等前言如果是在浏览器中,浏览器会管理cookie,不用人为干涉,但是在移动端开发时就不同了,需要手动传递cookie,和服务端交流。如果服务器按照传统的页面开发实现实现接口,那么移动客户端就要实现像浏览器一样操作cookie。1.想明白如何操作cookie,...转载 2019-03-16 08:24:17 · 703 阅读 · 0 评论 -
Graphql学习(四)-执行与自省
执行这一块可以说是GraphQL引擎的核心,执行查询&变更请求,返回相对应的结果集(通常是JSON格式)。作为后端,是比较关注的一块。参照官网的例子,来看看一个查询被执行的全过程Schema定义:type Query {human(id: ID!): Human}type Human {name: StringappearsIn: [Episode]starships...原创 2019-02-17 10:52:01 · 414 阅读 · 0 评论 -
Graphql学习(三)-Schema和类型
这一篇介绍一下构建GraphQL的类型及定义,会被GraphQL整体结构有个大致的了解为了能够准确描述每一个查询会返回的结果、对象、字段,故引入了Schema。Schema的主要用途是定义所有可供查询的字段(field),它们最终组合成一套完整的GraphQL API.类型系统每一个GraphQL服务都会定义一套类型,来描述服务可能返回的所有数据。当执行一个查询时,服务会根据定义的Sch...原创 2019-02-17 10:49:40 · 2247 阅读 · 0 评论 -
https是如何工作的?
最近在看到这么一篇讲解Https原理的文章,语言精炼,通俗易懂,特地将其翻译下,原文在此how does https work加密算法简介正文开始之前,我先来解释简单的解释下对称加密和非对称加密.对称加密采用对称密码编码技术,也就是编码和解码采用相同描述字符,即加密和解密使用相同的密钥,实现这种加密技术的算法称对称加密算法。对称加密使用简单,密钥较短,加密和解密过程较快,耗时短,常见...翻译 2019-06-15 07:35:05 · 165 阅读 · 0 评论 -
Android网络框架-Volley(一) 工作原理分析
使用Volley可以让我们轻松访问网络,不用每次都要写大量重复的代码,而且它是异步的,不用我们再去写异步任务,这样代码非常简洁。还有很重要的一点,他还可以异步加载图片并且有缓存机制,防止OOM发生,Volley把该干的全都干了,我们只需要专注于我们自己的业务逻辑就可以了。Volley适合于小数据量,多次数的网络访问情况,比如常见的一个listview,每行都是从网络上获取的一个图片和几...转载 2019-06-23 06:34:38 · 399 阅读 · 0 评论 -
Android网络框架-Volley(二) RequestQueue源码分析以及建立一个RequestQueue
从上一篇文章我们可以知道,Volley的整个工作都是建立在一个RequestQueue上的,所以理解RequestQueue对于我们使用Volley是很有必要的,上一篇文章的例子中,我们使用Volley.newRequestQueue()创建了一个RequestQueue实例,那么我们就先来看一看Volley是怎么把RequestQueue创建出来的吧。public class Volley...转载 2019-06-23 06:34:46 · 277 阅读 · 0 评论 -
HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标...转载 2019-07-04 06:51:23 · 439 阅读 · 0 评论 -
什么是HTTPS协议?
HTTP协议全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,位于TCP/IP四层模型当中的应用层。HTTP协议通过请求/响应的方式,在客户端和服务端之间进行通信。这一切看起来很美好,但是HTTP协议有一个致命的缺点:不够安全。HTTP协议的信息传输完全以明文方式,不做任何加密,相当于是在网络上“...转载 2019-06-24 06:47:57 · 675 阅读 · 1 评论 -
Android 根证书管理与证书验证
PKI 体系依赖证书执行极为关键的身份验证,以此确认服务端的可信任性。证书验证在 SSL/TLS 握手过程中完成,验证过程通常包含三个步骤:验证证书的合法性:这一步主要是验证证书是由合法有效的 CA 签发的。在客户端预先保存一个可靠的 CA 的根证书库,比如 FiexFox、Chrome、Android、Microsoft 等都有维护自己的根证书库,并据此验证服务端证书链的合法性。PKI 体系...转载 2019-06-19 06:24:47 · 8637 阅读 · 0 评论 -
no-cache和no-store的区别
no-cache从字面意义上很容易误解为不缓存,但是no-cache代表不缓存过期的资源,缓存会向服务器进行有效处理确认之后处理资源,更确切的说,no-cache应该是do-not-serve-from-cache-without-revalidation而no-store才是真正的不进行缓存。使用no-cache的目的就是为了防止从缓存中获取过期的资源。...转载 2019-06-19 06:25:12 · 3995 阅读 · 0 评论 -
Android网络框架-Volley实践 使用Volley打造自定义ListView
这篇文章翻译自Ravi Tamada博客中的Android Custom ListView with Image and Text using Volley最终效果这个ListView呈现了一些影视信息,每一行是一个影片的信息,每一行中有一张电影的图片,电影的名字、评分、类型、年份等信息。1.json数据我们通过解析json然后拿到数据,这个json数据包括json数组,每个j...翻译 2019-06-23 06:35:19 · 263 阅读 · 0 评论 -
Android网络框架-Volley(五) 使用Volley发送自定义Request
自定义一个RequestVolley已经帮我们实现好了StringRequest、JsonObjectRequest、JsonArrayRequest以及ImageRequest。如果我们想要发送一个xml请求,我们可以自定义一个Request。自定义一个Request我们需要:1. 继承Request,其中泛型T就是我们想要解析的格式,2. 重写parseNetworkResponse...转载 2019-06-23 06:35:10 · 190 阅读 · 0 评论 -
Android网络框架-Volley(四) 使用get和post方法发送json请求
这一篇文章起我们开始介绍如何使用Volley发起请求,其中的例子有一部分我借用了Ravi Tamada博客中的例子。Ravi Tamada写了好多很高质量的文章,如果有兴趣的朋友可以去他的博客学习一下:Android working with Volley Library。通过前面的分析我们知道Volley发送请求的前提是我们得建立一个RequestQueue。在Android网络框架-Volle...转载 2019-06-23 06:35:03 · 406 阅读 · 0 评论 -
Android网络框架-Volley(三) CacheDispatcher和NetworkDispatcher源码分析
在Android网络框架-Volley(一) 工作原理分析 中的流程图中我们知道Volley工作是有三个线程的:主线程、缓存线程和网络线程。这些线程的工作是建立在RequestQueue上的,上一篇文章 Android网络框架-Volley(二) RequestQueue源码分析以及建立一个RequestQueue 中我们分析了RequestQueue的源码以及最佳使用方式,这篇文章我们来分析两大...转载 2019-06-23 06:34:55 · 140 阅读 · 0 评论 -
Graphql学习(二)-查询和变更
这一篇介绍一下GraphQL实际使用时的语法和一些要素字段(Fields)请求对象上的特定字段,返回结果的数据字段可以是基本类型(String,Int),也可以是自定义对象类型{hero {name# 查询可以有备注!friends {name}}}{"data": {"hero": {"name": "R2-D2","friends": [{"name&qu原创 2019-02-17 10:47:15 · 381 阅读 · 0 评论 -
Graphql 调研
一、背景首先附上 Graphsql中文官网地址 简单介绍一下背景,公司内部有很多B端运营类项目,由于后期的不断迭代,后端的Rest服务接口(Ajax)变得越来越多,恰好适逢前端重构,故领导想试试看能否使用对前端来说适应及使用性更便捷的Graphql来替换Rest。后端的重构就落到我这边了。二、介绍GraphQL可以在原本的前端-后端的调用链中添加一个中间层BFF,用来对后端微服务的数...转载 2019-02-17 10:18:56 · 1077 阅读 · 1 评论 -
Hello Apollo: 创建一个使用 GraphQL 的 Android App
如果你是一个移动应用开发人员,你一定明白更快的API和更快的应用程序的重要性。特别是在数据流量比较贵的国家,只获取所需的数据变得尤为重要。但是,API是为多种客户端设计的,每种客户端都有不同的要求,大多数情况下你会发现这些API都没有针对移动应用进行优化。这就是像GraphQL这样的新技术可以提供帮助的地方。GraphQL是一种针对API的查询语言,它能让客户端精确地获得他们需要的数据。如...转载 2019-02-03 16:38:19 · 2498 阅读 · 4 评论 -
Android Studio利用异步任务AsyncTask发送post请求获取json数据
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:l 简单,快捷l 过程可控使用的缺点:l 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.2 )Handler异步实现的原理和适用的优缺点...转载 2018-07-23 06:28:26 · 470 阅读 · 0 评论 -
Android访问网络的常用方式:Handler、AsyncTask简单例子(服务器端+Android端)
首先应该明白两点:1.Android不允许在主线程(对于android来说,主线程就是UI线程)中访问网络。2.Android不允许在一个子线程中直接去更新主线程中的UI控件。对于问题1,可能你会说,这还不好办吗?再开一个线程不就完了?是的,你很聪明,原理也很简单。对于问题2,就需要用到线程间通信(IPC),Android很好的将其进行了封装,也就有了今天的Handler和Asyn...转载 2018-07-22 07:21:29 · 302 阅读 · 0 评论 -
网络编程—异步加载(AsyncTask)
我们知道请求网络的几种方式:1.使用TCP协议和URL进行网络编程 a)基于TCP协议:ServerSocket,Socket b)基于URL:URL 和 URLConnection1 2 3 42.使用Http协议进行网络编程 a)HttpURLConnection b)HttpClient1 2 3 4我们...转载 2018-07-22 07:21:23 · 500 阅读 · 0 评论 -
Java / Android 基于Http的多线程下载的实现
先说下原理,原理明白了,其实很简单:a、对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件。 this.fileSize = conn.getContentLength();// 根据响应获取文件大小 File dir = new File(dirStr); this.lo...转载 2018-07-16 06:17:01 · 227 阅读 · 0 评论 -
从原理角度解析Android (Java) http 文件上传
文件上传是我们项目中经常使用的功能,一般我们的服务器可能都是web服务器,当我们使用非浏览器客户端上传文件时,比如手机(Android)等上传,可能就需要对传输的数据进行规范化的拼接,说白了,就是我们得自己完成浏览器帮我们做的事。我首先写了服务器端代码,用来接收我们的数据,一会会贴出源码。然后写了个web页面用于上次,便于我们看其中的原理。当点击了上传以后,这里我使用了firefox的...转载 2018-07-16 06:17:31 · 656 阅读 · 0 评论 -
Socket 通信原理(Android客户端和服务器以TCP&UDP方式互通)
一、Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。 那么,什...转载 2018-04-20 08:02:47 · 332 阅读 · 0 评论 -
Android实现https网络通信之添加指定信任证书/信任所有证书
当Android客户端访问https网站,默认情况下,受证书信任限制,无法访问,可以有两种解决方法来实现:1、将要访问的https网站的ca证书添加到客户端信任证书列表中,此种方式为谷歌推荐,安全性高。2、将客户端设置为信任所有证书,也就是说不验证服务器证书,此种方式实现简单,但是安全性低,不推荐使用。直接上代码,分别实现两种方式的访问。 1、客户端添加指定信任证书asse...转载 2018-07-18 06:35:22 · 6873 阅读 · 0 评论 -
使用HttpsURLConnection的3种方法小结
最近遇到网络安全方面的问题,要将http转移到https,由于在工程中使用了HttpURLConnection,所以要相应的转而使用HttpsURLConnection,当然大部分是参考的网络上一些前辈们的成果,过程中也遇到了一些坑,在这里进行一下总结。由于https涉及到证书的认证方式,这里简单介绍一下: 关于证书,可以简单把它理解为网站的身份证。而给网站颁发身份证的就是CA(证书颁发机构...转载 2018-07-18 06:35:13 · 8181 阅读 · 0 评论 -
Android从服务器上下载文件
1.添加相关的权限,设备API大于6.0时需要主动申请权限<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permiss...转载 2018-07-30 05:44:12 · 18150 阅读 · 7 评论 -
Android网络编程之——文件断点下载(暂停/继续/重新下载)
一:关于断点下载所涉及到的知识点1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置HttpURLConnection connection = null;//设置下载请求属性connection.setRequestProperty();3.RandomAccessFile 对文件进行写入RandomAcces...转载 2018-07-30 05:46:11 · 1199 阅读 · 0 评论 -
Android网络之Volley的使用
Volley的概念及优点Volley是一个 HTTP 库,它能够帮助 Android app 更方便地执行网络操作,最重要的是,它更快速高效。平时Android中用到网络操作,我们最熟悉的无非就是HttpURLConnection以及HttpClient(已经弃用),不过这两种方法的用法还是有一些复杂,而Volley大大地简化了网络操作,只需几行代码即可完成HttpURLConnection可...转载 2018-08-05 06:41:40 · 716 阅读 · 0 评论 -
Volley框架的使用
所谓Volley,它是2013年Google I/O上发布的一款网络框架,基于Android平台,能使网络通信更快,更简单,更健全。它的优点:(1)默认Android2.3及以上基于HttpURLConnection,2.3以下使用基于HttpClient;(2)符合Http 缓存语义 的缓存机制(提供了默认的磁盘和内存等缓存);(3)请求队列的优先级排序;(4)提供多样的取消机制;(5)提供...转载 2019-02-02 09:34:42 · 392 阅读 · 0 评论 -
Volley框架学习总结
Volley框架特点:适用于频繁请求而每次请求数据量不会很大; 在请求的基础上做了磁盘缓存; 防止多次相同请求浪费资源; 提供String、Json、图片异步下载; 网络请求的优先级处理; 图片请求无需担心生命周期问题。Volley框架使用:首先,通过Volley的静态方法new一个请求队列 1 RequestQueue mQueue = Volley.newRequest...转载 2019-02-02 09:29:02 · 251 阅读 · 0 评论 -
XSS跨站脚本攻击----XSS攻击的三种类型
一、简介什么是XSS?百度百科的解释: XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插...转载 2018-10-27 13:49:25 · 2296 阅读 · 0 评论 -
XSS跨站脚本攻击过程最简单演示
大多数人对于XSS的原理有一个基本认识,这里不再重复,只给出一个能够演示其原理的完整样例。1 角色分配有XXS漏洞的网站,IP地址172.16.35.135,PHP为开发语言受害访问者,IP地址172.16.35.220,浏览器为IE11黑客的数据接收网站,IP地址172.16.2.192,PHP为开发语言2 源码实例2.1 漏洞网站存在漏洞的URL为:http://172.16....转载 2018-10-27 13:49:06 · 705 阅读 · 0 评论 -
Android网络请求时,汉字转化为url编码
java中的url 编码与解码 在开始讨论编码解码之前,首先来明确一下问题。什么是application/x-www-form-urlencoded字符串?答:它是一种编码类型。当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。 表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会...转载 2018-10-01 13:51:48 · 2284 阅读 · 1 评论 -
Android开发中请求URL中参数含有中文和空格的解决方法
在做安卓应用时,碰到要处理URL请求的中文参数,我们需要用到URLEncoder.encode(参数,"utf-8")方法对中文参数进行编码,这样做,能够解决大多数中文参数的乱码问题,当然编码方式不一定是“utf-8”,这取决于你服务器端的编码格式。但是,若是请求参数中不仅含有中文,而且还含有空格时,还需要做进一步处理。通过URLEncoder.encode()方法处理后,参数的中文乱码是被解...转载 2018-10-01 13:48:55 · 1747 阅读 · 0 评论