gpt4 book ai didi

java - HttpClient 中的授权承载 token ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:24 33 4
gpt4 key购买 nike

我正在尝试使用 Java 中的 oauth2 授权 token 访问 API这是客户端代码

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost post = new HttpPost("http://res-api");
post.setHeader("Content-Type","application/json");
post.setHeader("Authorization", "Bearer " + finalToken);

JSONObject json = new JSONObject();
// json.put ...
// Send it as request body in the post request

StringEntity params = new StringEntity(json.toString());
post.setEntity(params);

HttpResponse response = httpclient.execute(post);
httpclient.getConnectionManager().shutdown();

这将返回 401。

一个等效的 curl 命令可以毫无问题地使用相同的标记:

curl -H "Content-Type:application/json" -H "Authorization:Bearer randomToken" -X POST -d @example.json http://rest-api

我尝试注销请求,看起来授权设置正确

DEBUG [2016-06-28 20:51:13,655] org.apache.http.headers: >> Authorization: Bearer authRandomToKen; Path=/; Domain=oauth2-server; Expires=Wed, 29 Jun 2016 20:51:13 UTC

我通过复制粘贴这个相同的标记来尝试 curl 命令并且工作正常

虽然我也看到了这一行

DEBUG [2016-06-28 20:51:13,658] org.apache.http.impl.client.DefaultHttpClient: Response contains no authentication challenges

最佳答案

我遇到过类似的情况,我是按照下面的方式做到的,希望对其他人有帮助。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpURLConnectionExample {


public static void main(String[] args) throws Exception {

// Sending get request
URL url = new URL("http://example-url");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestProperty("Authorization","Bearer "+" Actual bearer token issued by provider.");
//e.g. bearer token= eyJhbGciOiXXXzUxMiJ9.eyJzdWIiOiPyc2hhcm1hQHBsdW1zbGljZS5jb206OjE6OjkwIiwiZXhwIjoxNTM3MzQyNTIxLCJpYXQiOjE1MzY3Mzc3MjF9.O33zP2l_0eDNfcqSQz29jUGJC-_THYsXllrmkFnk85dNRbAw66dyEKBP5dVcFUuNTA8zhA83kk3Y41_qZYx43T

conn.setRequestProperty("Content-Type","application/json");
conn.setRequestMethod("GET");


BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;

StringBuffer response = new StringBuffer();
while ((output = in.readLine()) != null) {
response.append(output);
}

in.close();
// printing result from response
System.out.println("Response:-" + response.toString());

}
}

关于java - HttpClient 中的授权承载 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085964/

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