http 协议消息发送及接收 (查询天气为例)python实现

要求:基于流(stream)套接字(socket)编写一个客户端(client)程序;程序可连接(connect)某服务器网站(比如:t.weather.sojson.com);程序向服务器网站发送 http 请求(GET 方法, /api/weather/city/101040100),服务器网站返回 http 响应(JSON 格式);程序解析并展示服务器网站的响应消息(JSON 格式)。代码实现:#coding=utf-8import socketimport js
摘要由CSDN通过智能技术生成

要求:

  1. 基于流(stream)套接字(socket)编写一个客户端(client)程序;

  2. 程序可连接(connect)某服务器网站(比如:t.weather.sojson.com);

  3. 程序向服务器网站发送 http 请求(GET 方法, /api/weather/city/101040100),服务器网站返回 http 响应(JSON 格式);

  4. 程序解析并展示服务器网站的响应消息(JSON 格式)。

代码实现:

#coding=utf-8

import socket
import json
from urllib.parse import quote_plus

# 一个HTTP请求报文由请求行、请求头部、空行、请求数据4部分组成
# 请求行由请求方法字段(GET\POST...)、url字段和HTTP协议版本3个字段组成,以\n分离
request_text = """\
GET /api/weather/city/101040100?address={}&sensor=false HTTP/1.1\r\n\
Host: t.weather.sojson.com:80\r\n\
User-Agent: CQUPT\r\n\
Connection: close\r\n\
\r\n\
"""
def get_weather(address):       #获取天气预报的json格式数据段
    sock = socket.socket()      # 创建socket实例
    sock.connect(('t.weather.sojson.com', 80))      # 客户端建立连接
    request = request_text.format(quote_plus(address))
    sock.sendall(request.encode('ascii'))       # 客户端发送消息,encode函数使得HTTP的报文以ASCII码的形势发给服务器
    data = b''
    while True:
        more = sock.
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值