Rest API を呼び出すアクティブなコード ジェネレーター用の Python 言語プラグインを作成しています。requests ライブラリの使用を何度も試みて失敗した後、はるかに低いレベルのソケットと ssl モジュールを使用することにしました。これまでのところ正常に動作しています。私は応答を解析するために非常に大雑把な方法を使用しています。本文のかなり短い応答の場合、これは正常に機能しますが、現在、はるかに大きな json オブジェクト (ユーザーのリスト) を取得しようとしています。応答は次のように途切れています (注: 簡潔にするためにいくつかのユーザー エントリを削除しました):
{"page-start":1,"total":5,"userlist":[{"userid":"jim.morrison","first-name":"Jim","last-name":"Morrison","language":"English","timezone":"(GMT+5:30)CHENNAI,KOLKATA,MUMBAI,NEW DELHI","currency":"US DOLLAR","roles":
この後、さらに数人のユーザーが表示され、応答本文はコンソールの 1 行に表示されます。
Rest APIサーバーからユーザーリストをリクエストするために使用しているコードは次のとおりです。
import socket, ssl, json
host = self.WrmlClientSession.api_host
port = 8443
pem_file = "<pem file>"
url = self.WrmlClientSession.buildURI(host, port, '<root path>')
#Create the header
http_header = 'GET {0} HTTP/1.1\n\n'
req = http_header.format(url)
#Socket configuration and connection execution
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn = ssl.wrap_socket(sock, ca_certs = pem_file)
conn.connect((host, port))
conn.send(req)
response = conn.recv()
(headers, body) = response.split("\r\n\r\n")
#Here I would convert the body into a json object, but because the response is
#cut off, it cannot be properly decoded.
print(response)
この問題についての洞察をいただければ幸いです。
編集:サーバー側で応答をデバッグしたことを忘れていましたが、すべてが完全に正常でした。