LoginSignup
2
4

More than 1 year has passed since last update.

Python から HTTP POST リクエストで Node-RED と連携するメモ(Python3版)

Last updated at Posted at 2021-05-07

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に変更する事で
動き出したので変更箇所をまとめます。

スクリーンショット 2021-05-07 22.35.48.png

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でできるよになりました。
また次頑張ります。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4