为什么字符串python会自动为我的字符串添加一些数字?

时间:2018-02-19 11:25:23

标签: python rest get request

这是我的代码。

import requests

url ='http://openapi.tago.go.kr/openapi/service/ExpBusArrInfoService/getExpBusTmnList'
data = {
'ServiceKey': u'....ZUH%2BuQNPmHiURbswJkYuWwM4UPzBZj3hQ%2FHafuEGG%2BujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ%3D%3D',
'tmnNm': '서울'

我想使用restAPI,但是当我请求时,我放入的密钥如下所示。

print(http.url)
http://openapi.tago.go.kr/openapi/service/ExpBusArrInfoService/getExpBusTmnList?ServiceKey=Wpb3CsAZUH%252BuQNPmHiURbswJkYuWwM4UPzBZj3hQ%252FHafuEGG%252BujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ%253D%253D&tmnNm=%EC%84%9C%EC%9A%B8

您可能会注意到它在'%'之后添加了25。所以,请求失败了。我怎么解决这个问题?我想格式化系统可能会导致这个麻烦。但我不知道如何解决它。请帮帮我。

1 个答案:

答案 0 :(得分:1)

您尝试使用已经过url编码的数据发出请求。这就是你的ServiceKey包含一些%xx字符的原因:

%2B means '+'
%3D means '='
etc.

您需要确保用作服务密钥的字符串是raw:

ZUH+uQNPmHiURbswJkYuWwM4UPzBZj3hQ/HafuEGG+ujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ==

而不是

ZUH%2buQNPmHiURbswJkYuWwM4UPzBZj3hQ%2fHafuEGG%2bujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ%3d%3d

互联网上有很多资源可以理解网址编码和解码。目前,您可以使用online URL encoder/decoderuse python API确保您的网址是原始的。