2016-03-18 3 views
0

私はWebSocketをを使用してMQTTサービスIOT AWSでcomunicateしようとするESP8266-Websocketaws-sdk-arduino(洗浄支店)とpubsubclientを使用しています。MQTT WebSocketを超える要求/ X-AMZN-ERRORTYPE:ForbiddenException

私の質問は最初の接続要求です。

:私は私の要求は、この(後に443ポートのエンドポイントに接続)した

(AWS IOT安らかなAPIを呼び出す正常に動作します)参照 https://github.com/awslabs/aws-iot-examplesとAWS-SDK-アルドゥイーノから符号コードとしてこのブラウザアプリを使用しています
GET wss://ENDPOINT.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSKEY%2F20160318%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20160318T183246Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a1f0d7b58983f9dff7e3bf6cab062db3243ebafc990803a018c6a23433891404 HTTP/1.1 
host: ENDPOINT.iot.us-west-2.amazonaws.com 
Connection: Upgrade 
Upgrade: websocket 
Origin: file:// 
Sec-WebSocket-Version: 13 
Sec-WebSocket-Key: D2alJOyUkBlR+8yhv2UBLg== 
Sec-WebSocket-Protocol: mqtt 

が、私はいくつかのリクエストヘッダパラメータが欠落しています?

HTTP/1.1 403 Forbidden 
content-type: application/json 
content-length: 241 
date: Fri, 18 Mar 2016 18:34:57 GMT 
x-amzn-RequestId: f2edfe83-1bbc-4481-97e0-39ccfc4d1c2f 
connection: Keep-Alive 
x-amzn-ErrorType: ForbiddenException: 

を得続けますかとにかくx-amzn-ErrorType:ForbiddenExceptionからより良いフィードバックを得るには?私は看板のプロセスを台無しにしていますか?プロトコルの切り替え

答えて

0

ええ、私は最終的に持っている応答ステータス101(たとえそれが残りのコールのために働く)\ O/

あなたがリクエストを構築している、それがなければなりません:

GET /mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSKEY%2F20160318%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20160318T183246Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a1f0d7b58983f9dff7e3bf6cab062db3243ebafc990803a018c6a23433891404 HTTP/1.1 

GET wss://ENDPOINT.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSKEY%2F20160318%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20160318T183246Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a1f0d7b58983f9dff7e3bf6cab062db3243ebafc990803a018c6a23433891404 HTTP/1.1 

代わりにjsの例では完全なパスを使用していました。私がクロムに​​よって構築されたリクエストを得たとき(開発ツールを通して)、パスもいっぱいでした。ファイヤーバグを使用した直後に、ブラウザがサーバーに送信していた実際のリクエストを取得しました(短いパス)。

今私はあなたはそれが仕事を得るために管理しなかった、それが動作するかどうか、私はコード;-)

+0

を共有します:-)(esp8266でWebSocketを超えるMQTTを)解決策を試して続けることができますか? – goliatone

+2

@goliatoneはい! https://github.com/odelot/aws-mqtt-websockets –

+0

ありがとうございます。私はそのライブラリを見ていた、接続をthoしていない。試してみましょう。 – goliatone

関連する問題