我正在尝试通过HttpClient发送POST请求,但是服务器响应显示“未经授权”错误。如何获得无记名令牌?我在寻找解决方案,但我不明白。
那是我的代码,我不知道如何获取请求的令牌...
HttpPost request = new HttpPost("http://domain...");
request.setHeader(HttpHeaders.ACCEPT, "application/json, text/plain, */*");
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/#json");
request.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "de,en-US;q=0.7,en;q=0.3");
request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");
request.setHeader(HttpHeaders.REFERER, "https://domain...");
request.setHeader("DNT", "1");
request.setHeader(HttpHeaders.HOST, "host..");
String authToken = ""; // ... ?
request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + authToken);
StringEntity params = new StringEntity("{}");
params.setContentEncoding("UTF-8");
request.setEntity(params);
response = this.getHttpClient().execute(request);
答案 0 :(得分:0)
首先,您必须使用用户名和密码(使用HTTP调用)对用户进行身份验证,然后您将获得令牌作为响应,可以将其添加到标题中的下一个POST调用中。
在POST调用之前,必须先进行一次get / post调用,这样您才能获得令牌。 相同的令牌可用于所有其他呼叫。
答案 1 :(得分:0)
您似乎正在尝试访问某些API,这要求您先获得一些访问令牌(承载令牌),然后才能使用实际的API。
大多数流程涉及两个步骤,如下所述。
第1步。 通过基本身份验证获取承载令牌(端点和参数下方为示例值,对于您的API而言将有所不同)
POST /auth `request.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + authToken);`
步骤2: 步骤1将为您提供某种访问令牌作为响应。您需要使用它来进行后续的API调用。
GET /Student/Mark `request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + authToken);`
您可以在What is the OAuth 2.0 Bearer Token exactly?
上了解有关承载令牌的更多信息。如果您仍然有疑问或无法使用我提到的方法访问API,请告诉我。