Pepper HTTP 통신 메모
12636 단어 Pepper
GET 요청
간단하게 사용자 이름을 서버에 가져 가는 것입니다.
URL에 사용자 ID를 매개변수로 보냅니다.
Choregraphe는 이런 느낌입니다.
처리 흐름
1. Pepper에게 번호(사용자 ID)를 말한다(1~4)
2.Switch로 1~4의 어느 쪽인지를 판별한다
3. Python Script 박스(HTTP GET)로 서버에 사용자 이름을 Get하러 간다.
4. HTTP 통신 시간이 15초를 지나면 타임아웃한다(Wait 박스).
5. HTTP GET 중에서 응답이 정상으로 돌아오고 있다면, Success Say, 실패의 경우는 Failure Say
※Switch에 의해 인도되는 값은, GET때에 사용하는 파라미터라고 생각해 주세요.
파이썬 스크립트 상자의 코드
HTTPGET
import urllib2, json
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
self.userName = None
def onUnload(self):
#put clean-up code here
pass
def onInput_onStart(self, p):
#pは、ユーザーのID
if len(str(p)) > 0:
#GETのURL(URL+パラメーター)
url = "https://example.com/users/" + str(p)
try:
r = urllib2.urlopen(url)
#ルートのJSONデータ
root = json.loads(r.read())
#必要な項目をUTF8でエンコードする
self.userName = root["user"]["userName"].encode("utf-8")
#userNameがあればデータあり、なければなし(今回の仕様)
if len(self.userName) > 0:
self.logger.info(self.userName)
self.onSuccess(self.userName)
else:
self.onFailure()
except urllib2.HTTPError, e: #HTTPエラー
self.logger.info(e.msg)
self.onFailure()
except urllib2.URLError, e: #サーバーに接続できない場合
self.logger.info(e)
self.onFailure()
else:
self.logger.info("failure")
self.onFailure()
def onInput_onStop(self):
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
POST 요청
사용자 정보를 업데이트하기 위한 POST 처리
사용하기 전에 requests 모듈을 프로젝트에 설치하십시오. (설치 방법은 참고를 참조)
타임 아웃 등은 GET과 동일한 방법을 사용한다.
아래 POST를 할 때 Python Script 상자 코드
HTTPPOST
import requests
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
self.memory = ALProxy("ALMemory")
self.pts = None
def onUnload(self):
#put clean-up code here
pass
def onInput_onStart(self):
#Pepperのメモリの中に格納された情報でサーバーのユーザー情報を書き換える
#self.pts = self.memory.getData("Sample/P")
#userId = self.memory.getData("Sample/UserId")
#更新する情報
payload = {
"userId":"1",
"points":6
}
#POSTのURL
self.url = "https://example.com/points/"
try:
self.r = requests.post(self.url, data=json.dumps(payload))
self.logger.info(self.r.status_code) #ステータスコードの取得
self.logger.info("success")
self.onSuccess() #成功したときの処理へ(出力の名前)
except requests.exceptions.RequestException as e: #例外発生
self.logger.info("failure")
self.logger.info(e)
self.onFailure() #失敗したときの処理へ(出力の名前)
def onInput_onStop(self):
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
참고
POST Requests 모듈 설치
h tp : // 쿠이타. m / hththt / ms / 14bfc2bf23192b020371
POST의 Request 모듈 사용법
h tp : // Rekue sts - cs - 그럼. Red d. cs. 이오 / 엔 / 아 st / 우세 r / 쿠이 cks rt /
Reference
이 문제에 관하여(Pepper HTTP 통신 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/CatDust/items/f26fc529473f8c33a614텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)