Python에서 HTTP POST 요청으로 Node-RED와 함께 작동하는 메모 (Python 3 버전)

파이썬 프로그램의 결과를 Node-RED로 보내고 싶습니다.
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로 할 수 있게 되었습니다.
또 다음 노력하겠습니다.

좋은 웹페이지 즐겨찾기