9

Spring Framework の RestTemplate を使用して Java で REST クライアントを作成しています。

postForLocationで投稿する必要があるまで、すべて問題ありません。

私がアクセスしているWebサービスは、POST ACTIONに関する情報を含むjsonを返します。

PHPでは問題ありませんが、JavaでRestTemplateを使用する方法が本当にわかりません。

public String doLogin()
    {
        Map<String, String> args = new HashMap<String, String>();

        args.put("email", AUTH_USER);
        args.put("token", AUTH_PASS);

        String result = restTemplate.postForLocation(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args);

        return result;
    }

これは NULL を返します。

同じコードでgetForObjectを使用(そしてもちろん、URL を適切なものに変更) すると、完全な応答が得られます。つまり、次のように動作します。

String result = restTemplate.getForObject(url, String.class);

では... postForLocationから RESPONSE を取得するにはどうすればよいでしょうか?

Obs .: この質問がばかげている場合は申し訳ありません。私はJavaの初心者です

4

2 に答える 2

11

このpostForLocationメソッドは、Location ヘッダーの値を返します。サーバーの応答を返すクラスで使用する必要がpostForObjectあります。String

このように:

String result = restTemplate.postForObject(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args);

これにより、応答が文字列として返されます。

于 2013-03-27T21:02:46.670 に答える
4

回答の 1 つに感謝して、postForObject を使用して Spring で POST から応答を取得する方法を理解しました

String result = restTemplate.postForObject(API_URL + "account/authenticate/?email="+ AUTH_USER +"&token="+ AUTH_PASS, null, String.class);

何らかの理由で、MAP で引数を使用できず、URL にインラインで配置する必要があります。しかし、それは私にとっては問題ありません。

于 2013-03-27T21:26:44.007 に答える