1

メソッドを介してKnockoutオブザーバブルから JSON に変換された JSON オブジェクトを含む「POST」リクエストを送信しています。Amplifyko.toJSONを使用して送信します。

これは私の増幅設定です:

 amplify.request.define('addContract', 'ajax', {
                url: '/api/contractmanager/contracts/create',
                dataType: 'json',
                type: 'POST'
            });

そして、これは私のdataserviseデータを追加する方法です:

addContract = function (callbacks, data) {
        return amplify.request({
            resourceId: 'addContract',
            data: data,
            success: callbacks.success,
            error: callbacks.error
        });
    };

実際にリクエストを送信する方法は次のとおりです。

contracts.addData = function (contractModel, callbacks) {

        var contractModelJson = ko.toJSON(contractModel);

        return $.Deferred(function (def) {
            dataservice.contract.addContract({
                success: function (dto) {
                    if (!dto) {
                        logger.error('Error saving!');
                        if (callbacks && callbacks.error) { callbacks.error(); }
                        def.reject();
                        return;
                    }
                                        },
                error: function (response) {
                    logger.error('Error saving!');
                    if (callbacks && callbacks.error) { callbacks.error(); }
                    def.reject(response);
                    return;
                }
            }, contractModelJson);
        }).promise();
    };

バックエンドには、Jerseyで RESTful Web サービスを使用しています。

問題は、リクエストを送信するとすぐに「HTTP ステータス 415 - サポートされていないメディア タイプ」が表示され、サーバーの GlassFish が次のように言うことです。要求されたメソッド (サポートされていないメディア タイプ)。」

これが機能するために何か特別なものを設定する必要がありますか? 何か不足していますか?

4

1 に答える 1

1

@Consumes送信されるコンテンツ タイプが、Jersey リソースのアノテーションのコンテンツ タイプと一致することを確認する必要があります。特定のケースでは、Jersey リソースは次のようにする必要があります。

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;

...

@PATH("create")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Item create(final Item item) {
  // Create here
}

また、コンテンツ タイプ「application/json」を使用してデータが送信されるようにする必要があります。

于 2013-03-19T14:57:55.060 に答える