【问题标题】:Why string python add some number to my string automatically?为什么字符串 python 会自动在我的字符串中添加一些数字?
【发布时间】:2018-02-19 11:25:23
【问题描述】:

这是我的代码。

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。所以,请求失败。我怎么解决这个问题?我猜格式化系统可能会导致这个麻烦。但我不知道如何修复它。请帮帮我。

【问题讨论】:

  • 您是如何创建http 对象的?
  • 您的网址包含需要转义的元素,请查看this 答案。

标签: python rest get request


【解决方案1】:

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

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

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

ZUH+uQNPmHiURbswJkYuWwM4UPzBZj3hQ/HafuEGG+ujFqnf9rvZcodp4McovLUtrgc8rOBAPC3tNLQ==

而不是

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

互联网上有很多资源可以了解 url 编码和解码。目前,您可以使用online URL encoder/decoder 或简单的use python API 来确保您的网址是原始的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2018-08-25
    • 2010-12-07
    相关资源
    最近更新 更多