[python]パブリックデータポータルSERVICE KEY IS NOT REGISTERRED ERROR


問題の状況


前の文章
https://velog.io/@ingzart/python-web-apiで-何かあったら-だめ-まず-犯人は-代理
ジェジュンはエージェントの問題を解決しましたが、別のエラーが発生しました.
response = requests.get(url, params=params)
raw_result = response.content
try:
    converted_result = json.loads(raw_result)
except Exception as e:
    return str(e)
私はparamsで戻りデータ型をJSONに設定し、魔法関数jsonでjson->python dictに変換して、私のPythonコードできれいな修飾を行います.これはload()を使っているのですが、どういうことなのか、取りに来たときに間違えていたら、次のHTML(?)文字列をそのまま返すように見えます
<OpenAPI_ServiceResponse>\n
\t<cmmMsgHeader>\n
\t\t<errMsg>SERVICE ERROR</errMsg>\n
\t\t<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>\n
\t\t<returnReasonCode>30</returnReasonCode>\n
\t</cmmMsgHeader>\n
</OpenAPI_ServiceResponse>'
2つの重要な情報
SERVICE_KEY_IS_NOT_REGISTERED_ERROR
30
しかし、私は確かに関連ドキュメントの下表で確認したように、認証鍵(符号化)をパラメータに渡しました.
service_key = self.service_key_encode

ここまで、私は何も間違っていないと思います.今はどうしてだめですか.あなたは十大熱病を起こすことができます.
しかし、この射札のような和弦は、私がそばで怒っていても泣いていても、根本的な原因を解決しなければ、絶対に行動するつもりはないので、冷静に具博士の助けを求めなければならない.

解決策


彼は、共通データポータルから符号化されたキー値を受信し、パラメータに渡したが、符号化されていないキー値(すなわち、私の符号化キー値を復号する)を加えなければならないと述べた.
パブリックデータポータルにも符号化キー値が与えられていて、「符号化していないと伝わらない特殊な文字が含まれていて、符号化しなければならない」というのは、なぜなのか考えてみました.私の脳皮層では、Pythonのリクエストライブラリは自分でコードすることができ、他の言語やライブラリではコードしないからかもしれません.(Pythonは符号化キーを2回、符号化キーを使用しないライブラリは符号化キーを1回使用するように要求)
service_key = self.service_key_decode
つまり、復号キーの値を入れることで、解決します.
他のブログは直接復号されていますが、このようなコンサルティングが多いので、最近公共データポータルサイトにサービス鍵を追加し、コード値を知ることができて、入れました.