0

私は Apache HttpComponents を使用していますが、何らかの理由でクエリ パラメータを使用して HttpPost を実行しようとすると、uri にパラメータが含まれていません。

コードの抜粋を次に示します。

List<BasicNameValuePair> parametersBody = new ArrayList<BasicNameValuePair>();

parametersBody.add(new BasicNameValuePair("response_type", "code"));

// continue adding parameters...

HttpPost post = new HttpPost("https://www.fitbit.com/oauth2/authorize");
post.setEntity(new UrlEncodedFormEntity(parametersBody, StandardCharsets.UTF_8));

HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(post);

EntityUtils.toString(post.getEntity()) で投稿のパラメーターを確認すると、すべてのパラメーターが期待どおりに存在します...ただし、投稿を実行すると、「https://www.fitbit.com/oauth2に移動します」 /承認?null "

ここで何をする必要がありますか? 違いがある場合、これは Android アプリ用ではありません。助けてくれてありがとう。

編集:当分の間、私は次のような回避策を行っています:

String uri = "https://www.fitbit.com/oauth2/authorize?"
             + EntityUtils.toString(new UrlEncodedFormEntity(parametersBody, StandardCharsets.UTF_8);
HttpPost post = new HttpPost(uri);
client.execute(post);
4

1 に答える 1

0

彼らのサポートを求めてください。私の推測では、サーバーが壊れていて、UrlEncodedFormEntity が生成している「Content-Type: application/x-www-form-urlencoded; charset=UTF-8」の POST リクエストを理解できません。

彼らの API の例は、単純な「Content-Type: application/x-www-form-urlencoded」(多くのブラウザーで生成される) の要求を示しています。

content-type を明示的に設定してみてください。setter メソッドがあります。

post.getEntity().setContentType("application/x-www-form-urlencoded")
于 2015-11-12T20:15:05.683 に答える