response

文件上传与下载

瘦欲@ 提交于 2020-01-27 02:06:26
文件上传与下载 导包 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> 配置 <!--文件上传配置--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 --> <property name="defaultEncoding" value="utf-8"/> <!-- 上传文件大小上限,单位为字节(10485760=10M) --> <property name="maxUploadSize" value="10485760"/> <property name="maxInMemorySize" value="40960"/>

5、爬虫系列之scrapy框架

梦想的初衷 提交于 2020-01-26 23:55:19
一 scrapy框架简介 1 介绍 (1) 什么是Scrapy?   Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。 整体架构大致如下: ''' Components: 1、引擎(EGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。 2、调度器(SCHEDULER) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列,

HTTP认证模式:Basic and Digest Access Authentication

夙愿已清 提交于 2020-01-26 23:17:01
一. Basic 认证   客户端以“ : ”连接用户名和密码后 ,再经 BASE64编码 ( Base64 Content-Transfer-Encoding )通过Authorization请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文。 可见Basic认证过程简单,安全性也低,存在泄露个人账号信息以及其他诸多安全问题,最好在实现了Transport Layer Security (TLS)的情况下去使用 。以下仅为原理演示,不代表真实情况: 客户端向服务器请求数据: GET / HTTP/1.1 Host: www.myrealm.com 服务端向客户端发送验证请求401: HTTP/1.1 401 Unauthorised Server: bfe/1.0.8.18 WWW-Authenticate: Basic realm="myrealm.com" Content-Type: text/html; charset=utf-8 客户端收到401返回值后,将自动弹出一个登录窗口,等待用户输入用户名和密码 将“用户名:密码”进行BASE64加密后发送服务端进行验证: GET / HTTP/1.1 Host: www.myrealm.com Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxx

python3-Request库详解

允我心安 提交于 2020-01-26 22:12:44
python3-Request库详解 通过urllib 的基本用法,但是其中确实有不方便的地方,比如处理网页验证和 Cookies 时,需要写 Opener 和 Handler 来处理。 为了更加方便地实现这些操作,就有了更为强大的库 requests 1.requests库简介 1.1 requests库的安装 在命令行界面中运行如下命令, 即可完成 requests 库的安装: pip3 install requests 1.2 基本用法 urllib 库中的 urlopen()方法实际上是以 GET 方式请求网页,而 requests 中相应的方法就是 get() 方法 import requests r = requests . get ( 'https://www.csdn.net/' ) print ( type ( r ) ) print ( r . status_code ) print ( type ( r . text ) ) print ( r . text ) print ( r . cookies ) 运行结果: 这里我们调用 get()方法实现与 urlopen()相同的操作,得到一个 Response 对象,然后分别输出 了 Response 的类型、状态码、响应体的类型、内容以及 Cookies。 1.3 Get请求 HTTP 中最常见的请求之一就是

vue 学习笔记--请求拦截

风格不统一 提交于 2020-01-26 18:05:31
import axios from 'axios' import store from "./store" ; import router from "./router" ; //在请求或响应被 then 或 catch 处理前拦截它们。 //http token 拦截 //直接暴露的是一个方法,所以到main.js引入直接调用即可 export default function setAxios ( ) { // 添加请求拦截器 axios . interceptors . request . use ( config => { if ( store . state . token ) { config . headers . token = store . state . token } return config } ) // 添加响应拦截器 axios . interceptors . response . use ( response => { if ( response . status === 200 ) { const data = response . data //如果登录过期/清空vuex的token和localstorage的token if ( data . xx === - 1 ) { store . commit ( 'setToken' , '' )

Filter的线程安全问题

老子叫甜甜 提交于 2020-01-26 17:05:10
6)Filter的线程安全问题: 和Servlet一样,为了提高性能,Filter也采取多线程模式。即:每一个线程来应答一个用户浏览器,而且这个线程和用户要访问 的目标Servlet的线程是同一个线程。说得更准确一点,当用户访问某个资源需要经过过滤器时,服务器中一个线程为了应答这个客户请求,先调用过滤器中 的doFilter方法,再根据是否有chain.doFilter的指令,决定是否调用目标资源的doXXX方法,当然肯定还由这同一个线程调用。执行完doXXX方法以后,自然要继续完成doFilter方法里面chain.doFilter语句后面的语句,这就和基本的C语言里 主程序调用子程序的规则一样了。 例 1.2.6 package com; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletHello1 extends HttpServlet { protected void doGet

Python接口测试学习笔记(二) - Fiddler抓包与测试

跟風遠走 提交于 2020-01-26 15:24:46
本文学习笔记整理自 【Python开发】接口测试教程 一. Fiddler配置 工作原理:终端设备(web, app)发出请求, fiddler作为代理, 传给服务器; 服务器返回数据, fiddler拦截后, 再传给终端设备. 下载地址: https://www.telerik.com/fiddler 1. https请求需要导入证书:   Chrome: Tools -> Options... -> HTPPS -> 勾上所有的checkbox -> ok   Firefox: 1. Tools -> Options... -> HTPPS -> 勾上所有的checkbox -> ok       2. Tools -> Options... -> HTPPS -> Actions -> Export Root Certificate to Desktop -> 去Firefox的设置 -> 高级 -> 证书 - > 导入 -> restart firefox 2. Fiddler抓取APP的数据: 1. 安装手机模拟器, 安装app 2. a.App 和电脑在同一局域网(连同一个wifi) b. wifi设置代理: 1. 进入手机设置 -> WiFi - 修改网络(配置代理) - 手动 2. 手机上的服务器填入电脑的ip地址(cmd -> ipconfig - IPv4

postman教程(1)

北慕城南 提交于 2020-01-26 10:12:58
Postman介绍 Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。其主要功能包括: 模拟各种HTTP requests 从常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至还可以发送文件、送出额外的 header。 Collection 功能(测试集合) Collection 是 requests的集合,在做完一個测试的時候, 你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同样的测试时,就不需要重新输入。而且一个collection可以包含多条request,如果我们把一个request当成一个test case,那collection就可以看成是一个test suite。通过collection的归类,我们可以良好的分类测试软件所提供的API.而且 Collection 还可以 Import 或是 Share 出來,让团队里面的所有人共享你建立起來的 Collection。 人性化的Response整理 一般在用其他工具來测试的時候,response的内容通常都是纯文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。这会造成阅读的障碍 ,而 Postman 可以针对response内容的格式自动美化。 JSON

Scrapy 爬虫模板--XMLFeedSpider

懵懂的女人 提交于 2020-01-26 09:42:28
XMLFeedSpider 主要用于 RSS 的爬取。RSS 是基于 XML 的信息局和技术。这篇文章的最后一下小结我会利用爬取经济观察网 RSS 的例子来讲解它的具体用法。现在我们先看一下 XMLFeedSpider 的常用属性。 零、常用属性 iterator:迭代器,主要用来分析 RSS 源,可用的迭代器有三种: iternode:高性能的正则表达式迭代器,是默认迭代器 html:加载所有的 DOM 结构进行分析,但是如果数据量巨大会产生性能问题。唯一的优点是处理不合理的标签会很有用 xml:和 html 迭代器类似。 itertag:指定需要迭代的节点 namespaces:定义处理文档时所需要使用的命名空间。 一、常用方法 adapt_response(response):在处理分析 Response 前触发,主要用于修改 Response 的内容,返回类型为 Response 。 parse_node(response,selectot):怕渠道匹配的节点时触发这个方法处理数据。这个方法必须在项目代码中实现,否则爬虫不工作,并且必须返回 Item、Request 或者包含二者的迭代器。 process_result(response,result):返回爬取结果时触发,用于将爬取结果传递给框架核心处理前来做最后的修改。 案例 下面我们通过爬取经济观察网的 RSS 来看看

Sanic框架(二)

故事扮演 提交于 2020-01-26 08:56:49
文章目录 Sanic Sanic Cookies读写 读取cookies 写入cookies cookies属性 Sanic路由 url_for方法建立路由 Sanic静态文件 Sanic中间件 提前响应 监听器 监听器的注册 添加任务 Sanic Sanic Cookies读写 写web,Cookies会经常用到。Sanic可以读写Cookies,并以key-value(键值对)的方式存储。 读取cookies from sanic.response import text @app.route("/cookie") async def test(request): test_cookie = request.cookies.get('test') return text("Test cookie set to: {}".format(test_cookie)) 写入cookies from sanic.response import text @app.route("/cookie") async def test(request): response = text("There's a cookie up in this response") response.cookies['test'] = 'It worked!' response.cookies['test'][