Python 接口测试练习(天气预报)

利用网上现成的的接口,用python练习了下

(又碰到了中文编码问题了:获取的页面源码 编码就是整不成中文)

天气查询的接口

Python 接口测试练习(天气预报)_第1张图片
图片.png

此处选择的是 getSupportCity(获取支持的城市),是一个查看系统支持哪些城市的接口方法。

进入页面后滚动到最下面看到如下图的内容
先来看看GET,上面是请求,下面是服务器的返回内容。

Python 接口测试练习(天气预报)_第2张图片
GET 和POST 请求.png

写好python代码后,运行发现参数输入all 或者 不输 是OK的,输入中文城市就显示不了,中文依旧是bytes类型的,我用 str 进行了转换

# -*- coding: utf-8 -*-
# __author__ = 'Carina'

from urllib.request import urlopen
from urllib.request import Request


url = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName='
print(type(url))    # 输出URL的类型
string = str('上海'.encode('utf-8'))
print(type(string))   # 输出参数的类型
url_all = url + string
print(url_all)   # 输出拼接后的URL
req = Request(url_all)    # 创建一个Request对象 并赋给变量req
data = urlopen(url_all).readlines()   #  打开网址并读取数据
print(type(data))    
print(data)
Python 接口测试练习(天气预报)_第3张图片
显示不了中文.png

接下来说下所遭遇的坑

1、如参数 string为中文,不进行str转换的话,运行会报错(类型不一样的变量不能进行拼接)

Python 接口测试练习(天气预报)_第4张图片
类型不一样的变量不能进行拼接.png

2、参数 string为中文,不进行encode转换,运行报错
UnicodeEncodeError: 'ascii' codec can't encode characters in position 70-71: ordinal not in range(128)

寻求度娘,说在文件头部加入以下代码

import sys
reload(sys)
sys.setdefaultencoding('utf-8')()

但这方法不适用于3.X,所以没用:Python3 已经取消了str, 让所有的字符串都是 unicode

写在最后的话

如果你用的也是3,知道如何能显示中文的话,可以留言或者直接简信也可以,万分感谢!

你可能感兴趣的:(Python 接口测试练习(天气预报))