各个协议层的网络请求
应用层的网络请求
用Requests库,来访问
#使用requests库来访问
import requests
def query(name):url="http://api.apiopen.top/searchPoetry"parameters={'name':name}request=requests.get(url,params=parameters)content=request.json()print(name)print(content['result'][0]['content'])
query('杜甫')
运行结果:
杜甫
万里飘零独此身,诗魂终恋浣花村。|宁贫宁冻宁饥死,一饭何曾忘至尊。
直接用HTTP协议来访问
import http.client
import json
from urllib.parse import quote
base='/searchPoetry'
def query(name):path='{}?name={}'.format(base,quote(name))conn=http.client.HTTPConnection('api.apiopen.top')conn.request('GET',path)rawreply=conn.getresponse().read()reply=json.loads(rawreply.decode('utf-8'))print(name)print(reply['result'][0]['content'])
query('李白')
这个程序比上一个程序更基础一些。
运行结果:
李白
风骨神仙籍里人,诗狂酒圣且平生。|开元一遇成何事,留得千秋万古名。
用python的网络协议栈的最低层socket实现
import socket
from urllib.parse import quote
request_text="""
GET /searchPoetry?name{} HTTP/1.1\r\n\
Host: api.apiopen.top:80\r\n\
User-Agent: search.py(Foundations of Python Network Programming)\r\n\
Connection: close\r\n\
\r\n\
"""
def search(name):sock = socket.socket()sock.connect(('api.apiopen.top', 80))request=request_text.format(quote(name))sock.sendall(request.encode('utf-8'))raw_reply=b''while True:more=sock.recv(1024)if not more:breakraw_reply+=moreprint(raw_reply.decode('utf-8'))
search('杜甫')
运行结果:
HTTP/1.1 200
Server: nginx
Date: Thu, 18 Oct 2018 08:36:27 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: close2c
{"code":200,"message":"成功!","result":[]}
0
不知为什么result为空,不知有哪位大佬可以解决下。
各个协议层的网络请求相关推荐
- Fragment标签页+OKHttp网络请求数据+MVP模式
分包方式 需要的第三方依赖 Fragment 新建两个fragment MainActivity 主页面布局 设置Fragment+tablayout的适配器 Fragment标签页结束 OKHttp ...
- iOS 使用Moya网络请求
Moya最新版本11.0.2 由于前段时间写了这篇文章,最新Moya已更新最新版本,故此也更新了下用法,本人已使用,故特意奉上最新的使用demo供参考. Moya11.0.2Demo Moya简介 M ...
- WireShark 探索网络请求过程(五层网络模型、三次握手、滑动窗口协议)
当我们在浏览器输入URL点击确认后,浏览器展示出网页信息.可你曾想过这其中的过程是怎样的?理论性较强的朋友可能知道后续DNS会解析地址,然后TCP/IP三次握手建立起连接,紧接着客户端与服务器开始传 ...
- Linux内核网络数据包发送(三)——IP协议层分析
Linux内核网络数据包发送(三)--IP协议层分析 1. 前言 2. `ip_send_skb` 3. `ip_local_out` and `__ip_local_out` 3.1 netfilt ...
- Linux内核网络数据包发送(二)——UDP协议层分析
Linux内核网络数据包发送(二)--UDP协议层分析 1. 前言 2. `udp_sendmsg` 2.1 UDP corking 2.2 获取目的 IP 地址和端口 2.3 Socket 发送:b ...
- (chap1 web网络基础) TCP/IP协议层
1. HTTP( HyperText Transfer Protocol) 超文本传输协议 2. TCP/IP协议层 应用层 应用层决定了向用户提供应用服务时通信的活动. TCP/P协议族内预存了各类 ...
- 分析udp数据报_Linux内核网络udp数据包发送(二)——UDP协议层分析
1. 前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调 ...
- Linux内核网络udp数据包发送(二)——UDP协议层分析
1. 前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调 ...
- Linux内核网络UDP数据包发送(三)——IP协议层分析
1. 前言 Linux内核网络 UDP 协议层通过调用 ip_send_skb 将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的处理,并分 ...
最新文章
- Vue:Vue和ECharts,在Vue上进行可视化处理,在Vue上画图
- SQL Server 迁移数据到MySQL
- 我泡在GitHub上的177天 by Ryan Seys
- 远程过程调用(Remote Procedure Call,RPC)
- 40种Javascript中常用的使用小技巧【转】
- ssh scp不用输入密码
- C Looooops POJ - 2115 (exgcd)
- SWF播放器object DEMO
- android studio gradle下载
- eclipse配置折叠/展开代码设置
- 2020校园招聘公司列表!计算机/互联网 技术类岗位!,一直更新!
- 只有在喝醉的时候,我才会喜欢自己
- 最优化方法 18:近似点算子 Proximal Mapping
- FusionAccess桌面云介绍
- 两台计算机互联方案,如何让两台电脑直接用网线互联.docx
- php获取蓝凑云文件列表,自制蓝奏云网盘解析接口全解
- aistudio解压zip
- mysql 查询名字包括下划线_Python 之 MySql 每日一练 329——查询名字中含有风字的学生信息...
- JavaScript-事件之onmousemove
- XP安装SQLSERVER企业版
热门文章
- 需求工程——软件建模与分析阅读笔记04
- Riscv五级流水线64位cpu,systemverilog编写,指令集rv64i,支持csr寄存器,可跑通dhrystone测试
- 达人篇:3.3)六西格玛
- centos系统进行pppoe拨号
- dos2unix命令使用说明
- matplotlib绘图输出中文字体【可以使用自己下载的字体】
- excel批量生成超链接(VBA代码)
- OpenFPGA: 一起跨年吧!
- Chrome浏览器安装插件提示“无法从该网站添加应用,拓展程序或脚本”解决办法
- 【魔法圣诞树】代码实现详解 --多种实战编程技巧倾情打造