0

うまく機能する UI とサーバー データ交換がありますが、Frisby.js を使用した新しい開発のテストを開始したいと考えていました。UI には、jQuery を使用する JavaScript フォーム マネージャーがあります。私の要求本文は、最初に JSON.stringify でシリアル化された JavaScript オブジェクトです。

var msg = {form:"login",data{username:"elmer",password:"wabbit"}};
var json_msg = JSON.stringify(msg);

次に、jQuery によって送信されます。

$.ajax(
    url: baseUrl+"forms/"+call,
    data: { req: json_msg },
    type: "POST",
    success: function(msg){...

サーバーで受信した生の本文コンテンツは次のようになります。

req=%7B%22form%22%3A%22login%22%2C%22data%22%3A%7B%22username%22%3A%22elmer%22%2C%22password%22%3A%wabbit%22%7D%7D

この未加工のボディ コンテンツは、私のサーバーが期待し、正常に使用するものであるため、コンテンツ タイプ ヘッダーとコンテンツ フォーマットの組み合わせをいくつか試しましたが、Frisby.js がそれらを詰まらせるか、間違ったボディを送信します。

注: 1. 最初に、メッセージ (JavaScript オブジェクト) をシリアル化する必要があります。2. 次に req=[serialized_message] を URI エンコードする必要があります。これらの 2 つの手順は jQuery.ajax() で簡単に実行できますが、Frisby.js では不可能に見えます

私が試した: シリアライズされていない JavaScript オブジェクトの使用、シリアライズされた JavaScript オブジェクトの使用、およびシリアライズされて URI エンコードされたテキスト (ここに表示)

msg = "%7B%22form%22%3A%22login%22%2C%22data%22%3A%7B%22username%22%3A%22elmer%22%2C%22password%22%3A%wabbit%22%7D%7D";

frisby.create('Login on HHHLEG web site.')
  .addHeader('X-Requested-With', 'XMLHttpRequest')
  .post('http://hhhleg/forms/login', req=msg )

上記のコードは、サーバーに到達したときに本体に何も含まれていません。単純な構文の問題またはコンテンツ タイプの問題があると思われます。または、関連する文字が詰まるために、Frisby.js がシリアライゼーションと URI エンコーディングの組み合わせを実行できない可能性があります。

4

2 に答える 2

0

同様の問題で、次のことが役立ちます:
1.必要な名前(あなたの場合は「req」)で変数を作成し、それをmsgコンテンツで送信し
ます

...
    frisby.create('Send valid data in post')
        .post(YourPath,
            req, //before it we need to assign to it value by
                 //"var req = msg" or any byte array
            {
                json: false,
                headers: {
                    "content-type": "application/octet-stream",
                    "Authorization": your.authToken //if needed
                }
            })
        .expectStatus(200)
...

私の場合、画像のバイト配列を送信しようとしましたが、URL エンコードされたメッセージと JSON フォームの送信リクエストで同様の問題が発生しました。
それが役に立たない場合、またはあなたのケースではないように思われる場合は、https://github.com/vlucas/frisby/tree/legacy-0.x/examplesページにアクセスして、データ送信を伴う POST リクエストの例をさらに確認してください。

于 2017-03-03T02:51:44.043 に答える