这是我的代码。
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。所以,请求失败了。我怎么解决这个问题?我想格式化系统可能会导致这个麻烦。但我不知道如何解决它。请帮帮我。
答案 0 :(得分:1)
您尝试使用已经过url编码的数据发出请求。这就是你的ServiceKey包含一些%xx字符的原因:
%2B means '+'
%3D means '='
etc.
您需要确保用作服务密钥的字符串是raw:
ZUH+uQNPmHiURbswJkYuWwM4UPzBZj3hQ/HafuEGG+ujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ==
而不是
ZUH%2buQNPmHiURbswJkYuWwM4UPzBZj3hQ%2fHafuEGG%2bujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ%3d%3d
互联网上有很多资源可以理解网址编码和解码。目前,您可以使用online URL encoder/decoder或use python API确保您的网址是原始的。