2
Set-Cookie: SESSIONID=836cfc64b5856712b040a0b1b3bf4237; Secure; HttpOnly 
Set-Cookie: Watson-DPAT=gBJQjAG%2FYflxpHKCwJVswQPEBuUmikj38zzFm8UZNTbOERxbeXS4WVxBIT5JetJBkeO1RT16PNz6%2BI17oFrEqvxjny%2FifZRorvBxXVzDmFkRpfRLxxj6ZNvFCvuRL1DtfW3nL8Ne1QDwpuKQmNt8%2BD9vFk7bGjlaziHT0ZFhNffWJT7FRCWbuJAyjKd%2BQui2WTIl6B8KglPi6GG1buh5UPDE%2Bc8OvrqyAfJRfYOApRdx7kHhtHdxIV7g%2FzNExXhafScqxi4cWEa5Kg9YGcypr8SIO%2FD7WOq0KyERHUDkbZatH53CCii25it5XD0plnt3cVc4bWs8tXkMT82V9DwCYULto64L%2BgNh30iTpyv72xOIfHeZTt2KISfhXMy6z86ueaJZzNd4nS6rwc7s2E8ldxwYLXrCU996xsLmzPYbGSzaeFLplG7c%2BCxzTlAll5fn8eMMbGn30W%2BrXLNtcaJ3lRK2nvzQCim1GhMdqoOvOcSvPWiJoVBrF8lc75eGSr8C%2Fovq20fOk3NDw4f0UPfBEGZYuAtXjonU7QdRhSgLRXxKyGvcYHEWeWUOQ2kvtI2m%2FRD%2BMRx9384p1v6uu8XfaU16IqoidV0Vew3MLPW4fxcOWRqnWKy0iIYbIJrWVcigloIy%2FNxgO7oHW7aacgH1u8IluAURz5AiE1Bej4l%2FjAI91IUTEssbg6fsXd3AqmlkixDglDJBgTEtMoXhXVyDjvJSaVUqdFTokP3YcRNhlTzqDQ3vG8txTLzECsyQHZ7DgWp%2B98P3zjvtad9xB%2BDzXhF4CaUB7ve99bWO5FO1DU3KRhx7pEAKGselDCoxTOkjIhEMMJbeQrbC1QWJ4uR9KlBPBdIbShd3; path=/speech-to-text/api; secure; HttpOnly 

音声セッションを作成する要求が機能します。不正なセッションIDのCookie

{ 
    "recognize": "https://stream.watsonplatform.net/speech-to-text/api/v1/sessions/836cfc64b5856712b040a0b1b3bf4237/recognize", 
    "recognizeWS": "wss://stream.watsonplatform.net/speech-to-text/api/v1/sessions/836cfc64b5856712b040a0b1b3bf4237/recognize", 
    "observe_result": "https://stream.watsonplatform.net/speech-to-text/api/v1/sessions/836cfc64b5856712b040a0b1b3bf4237/observe_result", 
    "session_id": "836cfc64b5856712b040a0b1b3bf4237", 
    "new_session_uri": "https://stream.watsonplatform.net/speech-to-text/api/v1/sessions/836cfc64b5856712b040a0b1b3bf4237" 
} 

それから私は、セッションの状態は、状態を「初期化」されていることを確認するために取得しようとするが、私は、「不正なセッションIDクッキー」エラーが発生します。

GET /speech-to-text/api/v1/sessions/836cfc64b5856712b040a0b1b3bf4237/recognize HTTP/1.1\x0d 
Content-Length: 0\x0d 
Accept-Encoding: gzip\x0d 
Authorization: Basic OGIyMTk0MDYtYWYzYS00YTFhLWExYmMtZDA3ZjNlNTY2Y2JmOm1lYmpBaG1ndkhMSw==\x0d 
Cookie: SESSIONID=836cfc64b5856712b040a0b1b3bf4237; Watson-DPAT=gBJQjAG%2FYflxpHKCwJVswQPEBuUmikj38zzFm8UZNTbOERxbeXS4WVxBIT5JetJBkeO1RT16PNz6%2BI17oFrEqvxjny%2FifZRorvBxXVzDmFkRpfRLxxj6ZNvFCvuRL1DtfW3nL8Ne1QDwpuKQmNt8%2BD9vFk7bGjlaziHT0ZFhNffWJT7FRCWbuJAyjKd%2BQui2WTIl6B8KglPi6GG1buh5UPDE%2Bc8OvrqyAfJRfYOApRdx7kHhtHdxIV7g%2FzNExXhafScqxi4cWEa5Kg9YGcypr8SIO%2FD7WOq0KyERHUDkbZatH53CCii25it5XD0plnt3cVc4bWs8tXkMT82V9DwCYULto64L%2BgNh30iTpyv72xOIfHeZTt2KISfhXMy6z86ueaJZzNd4nS6rwc7s2E8ldxwYLXrCU996xsLmzPYbGSzaeFLplG7c%2BCxzTlAll5fn8eMMbGn30W%2BrXLNtcaJ3lRK2nvzQCim1GhMdqoOvOcSvPWiJoVBrF8lc75eGSr8C%2Fovq20fOk3NDw4f0UPfBEGZYuAtXjonU7QdRhSgLRXxKyGvcYHEWeWUOQ2kvtI2m%2FRD%2BMRx9384p1v6uu8XfaU16IqoidV0Vew3MLPW4fxcOWRqnWKy0iIYbIJrWVcigloIy%2FNxgO7oHW7aacgH1u8IluAURz5AiE1Bej4l%2FjAI91IUTEssbg6fsXd3AqmlkixDglDJBgTEtMoXhXVyDjvJSaVUqdFTokP3YcRNhlTzqDQ3vG8txTLzECsyQHZ7DgWp%2B98P3zjvtad9xB%2BDzXhF4CaUB7ve99bWO5FO1DU3KRhx7pEAKGselDCoxTOkjIhEMMJbeQrbC1QWJ4uR9KlBPBdIbShd3\x0d 
User-Agent: Mojolicious (Perl)\x0d 
Host: stream.watsonplatform.net\x0d 

HTTP/1.1 400 Bad Request\x0d 
X-Backside-Transport: FAIL FAIL\x0d 
Connection: Keep-Alive\x0d 
Transfer-Encoding: chunked\x0d 
X-Error-Cause: Zuul Error: Malformed Session ID Cookie\x0d 
Content-Type: application/json\x0d 
Date: Wed, 01 Jun 2016 19:41:26 GMT\x0d 
Server: -\x0d 
X-Global-Transaction-ID: 237895544\x0d 
X-DP-Watson-Tran-ID: stream-dp01-c0182762-b9fe-4533-acab-7fbeb02b63dd\x0d 

このコードでは、Mojo :: UserAgentの1つのインスタンスを使用しているため、各リクエストでCookieが保持されます。

答えて

0

から利益を得ることができる。このエラーの原因です。興味深いのは、後続のスラッシュURLを含むPOSTセッション要求が成功し、正しいJSONデータを返すことです。セッションステータスを取得する次の要求は失敗します。コード問題ではありません。私はカールの問題も示しました。

my $ua = Mojo::UserAgent->new(); 
$ua->proxy->detect(); 
$ua->inactivity_timeout(0); 

# THIS URL WORKS - no trailing slash 
my $start_session_url = "https://${watson_username}:${watson_password}\@stream.watsonplatform.net/speech-to-text/api/v1/sessions"; 
# THIS URL DOES NOT WORK - with trailing slash 
# my $start_session_url = "https://${watson_username}:${watson_password}\@stream.watsonplatform.net/speech-to-text/api/v1/sessions/"; 

my $session_tx = $ua->post($start_session_url); 

my $response; 
my $recognize_url; 

if($response = $session_tx->success) { 
    print Dumper($response->json); 
    $recognize_url = $response->json->{recognize}; 
} else { 
    die "Failure to start session"; 
} 

$recognize_url =~ s/https:\/\//https:\/\/${watson_username}:${watson_password}\@/; 

# Malformed Cookie error happens here 
my $status_tx = $ua->get($recognize_url); 

if($response = $status_tx->success) { 
    print Dumper($response->json); 
} else { 
    die "Failure to get session status"; 
} 
1

セッションを使用する場合、セッションの作成時にSESSIONID Cookieが受信されます。そのCookieは、セッションの作成後に行うすべての呼び出しでサービスに返す必要があります。そのクッキーの値は "session_id"と等しくないことに注意してください: "836cfc64b5856712b040a0b1b3bf4237"、より長い英数字の文字列です。

btw。なぜあなたはセッションを使用していますか?あなたのユースケースは何ですか?多分あなたは最後のスラッシュを使用したセッションレスコール(単純)またはWebSocketを(ライブユースケースのためのより良い)

ダニ

+0

セッションレスが問題ありません。私は制御できないファイアウォールを介してWebソケットを取得できませんでした。私はモバイルデバイスから録音の一部を送ろうとしているので、セッションがうまくいくと思った。上記のMOJO_USERAGENT_DEBUG出力は、GETリクエストで送信されるSESSIONID Cookieを示しています。たぶん、「ワトソン-DPAT」クッキーは必要ないかもしれません。 –

+0

GETで送信するSESSIONID Cookieの値が、セッションを作成するためにPOSTを実行したときに取得するSESSIONID Cookieの値を文字単位で一致させるようにしてください –

関連する問題