Pythonプログラムの結果を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では使えないとわかりました。
参考サイト
python のModule urllib2 を利用する方法を教えて下さい
Python3のモジュールは
urllib.requestに変更する事で
動き出したので変更箇所をまとめます。
3行目
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でできるよになりました。
また次頑張ります。