gpt4 book ai didi

java - 这个 POST 请求实现有什么问题?

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:00 25 4
gpt4 key购买 nike

我一直在使用 java 解决 Google OAuth 2.0,但在实现过程中遇到了一些未知错误。
POST 请求的以下 CURL 工作正常:

curl -v -k --header "Content-Type: application/x-www-form-urlencoded" --data "code=4%2FnKVGy9V3LfVJF7gRwkuhS3jbte-5.Arzr67Ksf-cSgrKXntQAax0iz1cDegI&client_id=[my_client_id]&client_secret=[my_client_secret]&redirect_uri=[my_redirect_uri]&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token

并产生所需的结果。
但是下面在 java 中执行上述 POST 请求会导致一些错误和 "invalid_request" 中的响应
检查以下代码并指出这里出了什么问题:(使用 Apache http-components)

HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/token");
HttpParams params = new BasicHttpParams();
params.setParameter("code", code);
params.setParameter("client_id", client_id);
params.setParameter("client_secret", client_secret);
params.setParameter("redirect_uri", redirect_uri);
params.setParameter("grant_type", grant_type);
post.addHeader("Content-Type", "application/x-www-form-urlencoded");
post.setParams(params);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(post);

尝试为每个参数使用 URLEncoder.encode( param , "UTF-8") 但这也不起作用。
可能是什么原因?

最佳答案

您应该在帖子中使用 UrlEncodedFormEntity 而不是 setParameter。它也为您处理 Content-Type: application/x-www-form-urlencoded header 。

HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/token");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("code", code));
nvps.add(new BasicNameValuePair("client_id", client_id));
nvps.add(new BasicNameValuePair("client_secret", client_secret));
nvps.add(new BasicNameValuePair("redirect_uri", redirect_uri));
nvps.add(new BasicNameValuePair("grant_type", grant_type));

post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(post);

关于java - 这个 POST 请求实现有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com