我有一个适用于Mendeley的OAuth1的应用程序。由于不再支持OAth1,因此我必须将我的应用程序迁移到OAuth2以获取数据。
我得到令牌响应,但我无法请求任何内容,程序抛出NullPointerException。
我正在测试这个源代码here。
我还使用Apache OLTU和Apache HTTPClient
这是我尝试运行的代码:
static OAuthClientRequest request;
static OAuthClient oAuthClient;
static OAuthJSONAccessTokenResponse tokenResponse ;
static String CATALOG_URL="https://api-oauth2.mendeley.com/oapi/documents/groups?items=10";
request = OAuthClientRequest
.tokenLocation("https://api-oauth2.mendeley.com/oauth/token")
.setClientId(Client_ID)
.setClientSecret(Secret)
.setGrantType(GrantType.CLIENT_CREDENTIALS)
.setScope("all")
.buildBodyMessage();
System.out.println("is set up");
oAuthClient = new OAuthClient(new URLConnectionClient());
tokenResponse = oAuthClient.accessToken( request, OAuthJSONAccessTokenResponse.class);
System.out.println("token is retrieved");
HttpGet httpGet = new HttpGet(CATALOG_URL);
httpGet.setHeader("Authorization", "Bearer " + tokenResponse.getAccessToken());
//this is where the Exception is thrown
HttpResponse httpResponse = apacheHttpClient.execute(httpGet);
//
System.out.println("this is it: "+httpResponse.toString());
String responseAsString = EntityUtils.toString(httpResponse.getEntity());
System.out.println(responseAsString);
我得到的例外是:
Exception in thread "main" java.lang.NullPointerException
我现在问自己为什么会这样。 CATALOG_URL来自Mendeley网站,应该返回包含所有公共组的列表的第一页。
我也尝试过Mendeley网站上的不同网址。
HttpGet声明可能有什么问题吗?
有没有人有任何提示?
答案 0 :(得分:2)
您正在接收NullPointerException,因为您正在使用尚未初始化的变量(apacheHttpClient)。先试试这个
apacheHttpClient = ApacheHttpTransport.newDefaultHttpClient();