Python에서 HTTP POST 요청으로 Node-RED와 함께 작동하는 메모 (Python 3 버전)
1ft-seabass.jp.MEMO님의 기사
Python에서 HTTP POST 요청에서 Node-RED와 함께 작동하는 메모 을 참고로 시도하면
Traceback (most recent call last):
File "nodered.py", line 3, in <module>
import urllib2
ModuleNotFoundError: No module named 'urllib2'
그리고 오류가 발생했습니다.
다양한 구그를 보면
urllib2가 Python3에서 사용할 수 없다는 것을 알았습니다.
참고 사이트
파이썬 Module urllib2를 사용하는 방법을 알려주세요.
Python3의 모듈은
urllib.request로 변경하면
움직이기 때문에 변경 부분을 정리합니다.
세 번째 줄
import urllib2
모듈을
import urllib.request
import urllib.parse
로 변경
33행
request = urllib2.Request(url)
을
request = urllib.request.Request(url, data.encode())
로 변경
37행
response = urllib2.urlopen(request,data)
을
response = urllib.request.urlopen(request)
로 변경
정리 프로그램은
차이를 알기 쉽게
1ft-seabass.jp.MEMO 님의 프로그램으로 시도했습니다.
import urllib.request
import urllib.parse
#import urllib2
import json
params = {}
### JSON データ設定
# https://docs.python.org/ja/3/library/json.html
# Dictionary(object)
params["x"] = 10
params["y"] = -10
params["z"] = 5
# Array
params["arr"] = []
params["arr"].append(["id1","A"]) # append Array
params["arr"].append(["id2","B"]) # append Array
params["arr"].append({"id3":"C"}) # append Object
params["arr"].append({"id4":"D"}) # append Object
### HTTP リクエスト設定
# python3 https://docs.python.org/ja/3/library/urllib.request.html
# python2 https://docs.python.org/ja/2.7/library/urllib2.html
# JSON データを文字列化
data = json.dumps(params)
# print(data)
# Content-Type application/json を HTTP Header に加える
url = 'http://localhost:1880/test'
#request = urllib.request.Request(url)
#request.add_header('Content-Type','application/json')
# POST リクエスト
#response = urllib.request.urlopen(request,data)
request = urllib.request.Request(url, data.encode())
request.add_header('Content-Type','application/json')
# POST リクエスト
response = urllib.request.urlopen(request)
### HTTP レスポンス
print('code',response.getcode())
# 結果 : ('code', 200)
# 返答データを抽出
response_data = response.read()
print('response_data',response_data)
# 結果 : ('response_data', '{"result":"OK"}')
# さらに返答データを JSON として取り出す
response_json = json.loads(response_data)
print('response_json["result"]',response_json["result"])
# 結果 : ('response_json["result"]', u'OK')
이것으로 염원의 화상 처리는 Python으로 실시해 타와의 제휴는 Node-RED로 할 수 있게 되었습니다.
또 다음 노력하겠습니다.
Reference
이 문제에 관하여(Python에서 HTTP POST 요청으로 Node-RED와 함께 작동하는 메모 (Python 3 버전)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/a10teki/items/3a7ee0f972166349925e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)