通常、ここで問題の解決策を見つけることができますが、この特定の状況では見つけることができないため、これがスタック オーバーフローに対する最初の質問です。API と対話するためにさまざまな言語で REST 呼び出しを出力するコンパイラ用の Python プラグインを作成しています。JSON形式のリクエストボディでユーザー名とパスワードを送信することにより、ソケットおよびsslモジュールで認証しています。認証が成功すると、API は、本文に重要な応答データを含む次の形式の応答を返します。
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Date: Tue, 05 Feb 2013 03:36:18 GMT
Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,OPTIONS,GET
Access-Control-Allow-Headers: Content-Type
Server: Restlet-Framework/2.0m5
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 94
{"authentication-token":"<token>","authentication-secret":"<secret>"}
これは、文字列操作のための強力なツールを考えると、Pythonistas にとっておそらく非常に初歩的な質問です。残念ながら、私は Java から始めた新しいプログラマーです。"<token>"
この応答全体を解析してandを取得する最良の方法は何か知りたい"<secret>"
です。「{」の検索を使用して、部分文字列を json オブジェクトにダンプする必要がありますか? 私の直感では、re モジュールを試して使用するように指示されていますが、トークンとシークレットのパターンは明らかに予測できないため、この状況でどのように使用されるかを理解できないようです。低レベルのモジュール セットを使用して認証することを選択したため、この応答は、ヘッダーを構築し、本文に JSON データを追加して取得した 1 つの大きな文字列です。次に、要求を実行し、次のコードで応答を取得します。
#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()
print(response)
print ステートメントは、最初のコード サンプルを出力します。どんな助けや洞察も大歓迎です!