0

Google Http Client と Jackson を使用して、データをバックエンド (JSON API) にクエリしています。

パラメータ (1 つの Java Bean オブジェクト) を渡す必要があります。オブジェクトのフィールドは、ほとんどまたは多くない場合があります。最初は、次のようにコンテンツとして渡そうとします:

HttpRequest request = requestFactory.buildGetRequest(getUrl(api)).setContent(new JsonCContent(jsonFactory, params));

ただし、GET 操作で HTTP コンテンツを設定することはできません。

これらのパラメータをどのように渡すことができますか?

1 つの条件の下で: このオブジェクトを URL パラメーターの文字列に変換する util メソッドを記述したくありません。しかし、それを行うための再利用可能な API が既にあれば、それで問題ありません。

可能であれば、一般的な解決策が必要です。これを 600 の JSON API 呼び出しに適用するためです。

私の最後の選択肢は、バックエンドを GET の代わりに POST リクエストを期待するように変更し、クライアント側で POST 操作を実行することです。

ありがとう

4

2 に答える 2

0

buildGetRequest()予想される使用法は、呼び出しに使用している URL クラスを拡張することのようです。たとえば、「user」と「token」という 2 つの追加のクエリ パラメータを提供するとします。これは、次のようにして行うことができます。

HttpRequest request = requestFactory.buildGetRequest(
    new CustomUrl("http://www.yourserver.com").setUser(userId).setToken(token));

クラスは次のようにCustomUrl定義されます。

public class CustomUrl extends GenericUrl {
    public CustomUrl(String encodedUrl) {
        super(encodedUrl);
    }

    @Key("user")
    private String mUserId;

    @Key("token")
    private String mToken;

    public CustomUrl setUser(String userId) {
        mUserId = userId;
        return this;
    }

    public CustomUrl setToken(String token) {
        mToken = token;
        return this;
    }
}

値は@Key注釈には必要ありませんが、指定されている場合は、それぞれのクエリ パラメータの名前として使用されます。省略した場合、代わりに変数の名前が使用されます (例を参照) 。

詳細については、 google-http-client の javadocを確認してください。

于 2012-12-05T01:16:07.877 に答える