小编典典

linkedin中Http请求中的授权标头

jsp

嗨,在我的Servlet代码中,我代表用户请求具有access_token的服务器,我可以使用以下代码进行请求:

OAuthRequest request2 = new OAuthRequest(Verb.GET,"https://api.linkedin.com/v1/people/~:(first-name,last-name,email-address)?oauth2_access_token="+accesstok);

但是我如何使用以下的授权标题请求:

GET /v1/people/~ HTTP/1.1
Host: api.linkedin.com
Connection: Keep-Alive
Authorization: Bearer AQXdSP_W41_UPs5ioT_t8HESyODB4FqbkJ8LrV_5mff4gPODzOYR

我以下面的方式使用,但没有崩溃:

private static final String PROTECTED_RESOURCE_URL = "/v1/people/~:(first-name,last-   name,email-address) HTTP/1.1 Host: api.linkedin.com Connection: Keep-Alive Authorization: Bearer ";
Object AccessToken=  o.get("access_token");

String accesstok=AccessToken.toString();

OAuthRequest request2 = new OAuthRequest(Verb.GET,PROTECTED_RESOURCE_URL+accesstok);

谢谢


阅读 274

收藏
2020-06-08

共1个答案

小编典典

您可以使用该apache.http库。您不需要一些OAuth库或其他任何内容。OAuth协议非常易于处理,您可以使用普通的HTTP请求来执行。这是
apache-http 库的示例。

[编辑] 我更改了代码以提供完整的示例,说明如何使用这些库。

import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

public class OAuthConnect {

    public static void main(String[] args) {
        try {
            HttpClient httpclient = HttpClientBuilder.create().build();  // the http-client, that will send the request
            HttpGet httpGet = new HttpGet("");   // the http GET request
            httpGet.addHeader("Authorization", "Bearer AQXdSP_W41_UPs5ioT_t8HESyODB4FqbkJ8LrV_5mff4gPODzOYR"); // add the authorization header to the request
            HttpResponse response = httpclient.execute(httpGet); // the client executes the request and gets a response
            int responseCode = response.getStatusLine().getStatusCode();  // check the response code
            switch (responseCode) {
                case 200: { 
                    // everything is fine, handle the response
                    String stringResponse = EntityUtils.toString(response.getEntity());  // now you have the response as String, which you can convert to a JSONObject or do other stuff
                    break;
                }
                case 500: {
                    // server problems ?
                    break;
                }
                case 403: {
                    // you have no authorization to access that resource
                    break;
                }
            }
        } catch (IOException | ParseException ex) {
            // handle exception
        }
    }
}

在这里,您可以找到jar可以添加为库的文件:

Apache HTTP核心v 4.3.3

Apache HTTP客户端v
4.3.6

您也可以从Apache页面下载jar

如您所见,这些库为您提供了处理访问API(GET POST DELETE..)可能需要的所有请求的所有功能。您可以更改标题并处理您收到的任何内容作为响应。我知道它看起来很复杂,但是有了它,您将可以完全控制OAuth请求,而不必依赖任何库。

[另一个编辑]
从Apache页面下载zip文件时,需要将其解压缩,所需jar文件位于该lib文件夹中。

httpcomponents-core-4.3.3
   +-examples
   +-lib
      +-commons-cli-1.2.jar
      +-httpcore-4.3.3.jar   <-- this one you need
      +-httpcore-ab-4.3.3.jar
     ...

和相同的 httpClient

httpcomponents-client-4.3.6
   +-examples
   +-lib
      +- commons-codec-1.6.jar
      +- ...
      +- httpclient-4.3.6.jar  <-- this one
      +- ...
2020-06-08