4

Tomcat (Server1) から API を提供する REST のジャージー実装があります。

@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Users create(Users users) {
    return dao.create(users);
}

要求されたものは、Apache (Server2) の jquery クライアントから投稿されます

$.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: rootURL,
    dataType: "json",
    data: formToJSON(),
    success: function(data, textStatus, jqXHR){
        alert('user created successfully');

    },
    error: function(jqXHR, textStatus, errorThrown){
        alert('user error: ' + textStatus);
    }
});

このjqueryは実際にリクエストをサーバーに送信していますが、サーバー/APIはこのリクエストを認識できませんでした。また、@Formparam / @HeaderなどのPOST / GETを使用した他のすべてのリクエストは機能しています

RESTクライアントを使用して同じことを使用すると、機能していました.POSTのこの問題をリクエストオブジェクトのタイプでソートするのを手伝ってくれませんか.

4

1 に答える 1

0

通信の問題をデバッグする最善の方法は、サーバーに送信されたヘッダーを検査することです。このタスクを実行するために、Chrome 開発者ツールを使用してブラウザでリクエストを調べることができます。Chrome を開き、F12 を押して [ネットワーク] タブに移動し、XHR でフィルタリングして、このリクエストを強制的に発行します。すべてのヘッダーをコピーして、ここに投稿してください。

次に、Jersey Client API を使用してテストに進みます。クライアントにフィルターを追加してロギングを有効にします。

client.addFilter(new LoggingFilter());

次に、コンソールを見て、出力を Chrome Dev Tools からの前の出力と比較します。

于 2012-11-12T19:37:29.843 に答える