0

Cloudbees でホストされている Java Web アプリに RESTful リクエストを送信しようとしています。
私は次のようにjQueryを使用しています:

    $.ajax({
          url: '/api/users/',
          type: 'PUT',
              dataType: 'json',
              data: {
                fbId:       facebookUserId == null ? '' : facebookUserId,
                fbName:     facebookUserName,
                lnId:       linkedInUserId == null ? '' : linkedInUserId,
                lnName:     linkedInUserName
              },
          success: function(response) { 
              internalGetConfiguration();
          }
    });

(上記のコード スニペットのように) PUT を使用すると、Tomcat はパラメーターを通過しません (fbId などは解析されないか、到着しません。わかりませんが、送信されていることがわかります)。POST に変更すると、問題なく処理されます。

Cloudbees ホスティングで PUT/DELETE を使用することはできませんか?? それを機能させるために追加する必要がある構成はありますか、それとも何らかの形でフォーマットする必要がありますか?

Google App Engine に関する別の投稿で、この問題 (または少なくとも HAD) が発生しているのを見たことがありますが、これは cloudbees で既知の問題ですか?

4

1 に答える 1

0

Tomcat ユーザー グループのこのスレッドによると、ユーティリティ メソッドの getParameter ファミリの Tomcat の実装は、POST/GET 要求の x-www-form-urlencoded コンテンツ ボディの自動解析のみをサポートします。動作はサーブレットの仕様によって限定されていないため、サーブレット エンジンによって異なる場合があります。REST セマンティクスでは、PUT 要求は通常、リソースのコンテンツを置き換える方法であることを意図しているため、コンテンツ本体の自動操作について保守的であることは不適切ではないようです。

コードがすべての Java EE デプロイメント環境で確実に機能するようにするには、アプリケーション内から HTTP 要求のコンテンツ ボディを直接解析することをお勧めします。Apache HttpComponentsライブラリには、フォーム エンコードされたコンテンツを解析するための機能がいくつかあり、役立つ場合があります。

于 2012-09-11T16:00:33.133 に答える