0

作成した Web サイトに arduino をログインさせようとしています。
Web サイトには、パスワード用とユーザー名用の 2 つのフィールドを持つ基本的なフォームがあり、ログインというラベルの付いた送信ボタンもあります。

Chrome を使用してログインするときに fiddler2 を使用して http パケットを盗聴し、その http 投稿からの情報を使用して自分の投稿を再作成してログインしようとしています。

ログインに使用しているコードの一部を次に示します。

if (client.connect(server, 80)) {

 Serial.println("connected to server");

// Make a HTTP request:               
 client.println("POST/username=slwhore&passwd=1234qwer%21&op2=login&lang=english&force_session=1&return=B%3AaHR0cDovL3JlbW90bGV0LmNvbS8%3D&message=0&loginfrom=loginmodule&cbsecuritym3=cbm_56b7d5e7_00583e07_b0b6f81b4c86d117542f5cc7b7c3416e&Submit=Login HTTP/1.1");

client.println("Host:www.remotlet.com");

client.println("Content-Type: application/x-www-form-urlencoded");

client.println("Content-Length: 229");

client.println("Connection: close");

client.println();

次に、ホストから戻ってくる情報を受け取る別のコードがあり、これが機能することがわかっています。このコードを実行すると、サーバーに接続できますが、サーバーからの応答がまったくありません。どんな助けでも大歓迎です。

4

1 に答える 1

2

あなたの HTTP リクエストは完全に間違っています。どの種類のサーバー Web でも受け入れられることはありません。

1 行目: HTTP の 1 行目は METHOD URI VERSION です。メソッドと URI の間にスペースを入れませんでした。また、GET 要求を使用するときのように、POST データは URI の一部ではありません。サーバーが何を使用しているかはわかりませんが、通常、正常なログインは GET を使用せず、URI 内でログインを渡しません。

2行目:スペースを忘れました

4 行目: コンテンツの長さを設定しましたが、明らかにコンテンツを送信していません。

一般的な考慮事項: HTTP では、行末記号は \n だけでなく \r\n です。

ブラウザでリクエストを行い、wireshark でトラフィックを傍受し、それがどのように行われるかを確認することをお勧めします。

于 2013-02-07T19:08:34.923 に答える