Apache HttpPost是否不发送查询参数?

时间:2015-11-12 18:45:06

标签: java oauth-2.0 apache-httpcomponents fitbit

我使用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())检查帖子的参数时,所有参数都按预期存在...但是当我执行帖子时,它会导航到& #34; https://www.fitbit.com/oauth2/authorize?null&#34;

我需要在这做什么?如果它有所作为,那么这不适用于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);

1 个答案:

答案 0 :(得分:0)

询问他们的支持。我的猜测是他们的服务器坏了,无法理解您的UrlEncodedFormEntity正在生成的“Content-Type:application / x-www-form-urlencoded; charset = UTF-8”的POST请求。

他们的API示例以简单的“Content-Type:application / x-www-form-urlencoded”(由许多浏览器生成)显示请求。

尝试明确设置内容类型,有一个setter方法

post.getEntity().setContentType("application/x-www-form-urlencoded")