我使用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);
答案 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")