0

Google Tasks API 및 Gogole Adwords API를 사용 중입니다. 애드워즈 API를 사용하려면 최신 google-http-client jar를 사용해야합니다. 하지만 최신 항아리를 사용하면 Tasks API가 제대로 작동하지 않는 것 같습니다. 오류1.12.0보다 큰 google-http-client 버전의 작업 API가 작동하지 않음

java.lang.NoSuchMethodError: com.google.api.client.http.HttpRequest.setAllowEmptyContent(Z)Lcom/google/api/client/http/HttpRequest; at com.google.api.client.googleapis.services.GoogleClient.buildHttpRequest(GoogleClient.java:171) at com.google.api.client.http.json.JsonHttpRequest.buildHttpRequest(JsonHttpRequest.java:179) at com.google.api.client.http.json.JsonHttpRequest.executeUnparsed(JsonHttpRequest.java:207) at com.google.api.services.tasks.Tasks$Tasklists$List.execute(Tasks.java:1731)

의 전체 스택 트레이스는 여기에 내가 작업 여기

 HttpTransport httpTransport = new NetHttpTransport(); 
     JacksonFactory jsonFactory = new JacksonFactory(); 
     OAuthHmacSigner signer = new OAuthHmacSigner(); 
     signer.clientSharedSecret = consumerSecret; 
     GoogleOAuthDomainWideDelegation initializer = new GoogleOAuthDomainWideDelegation(); 
     initializer.requestorId = "[email protected]"; // email of the user, basically the xoauth_requestor_id URL param 
     OAuthParameters parameters = new OAuthParameters(); 
     parameters.consumerKey=consumerKey; 
     parameters.version = "1"; 
     parameters.signer = signer; 
     initializer.parameters = parameters; 
     Tasks service = Tasks.builder(httpTransport, jsonFactory).setHttpRequestInitializer(initializer).build(); 

     Tasklists.List listTask = service.tasklists().list(); 
     TaskLists taskLists = listTask.execute(); 

의 코드 사용하고이다 나는에 주문 구글 작업 및 Google 애드워즈 API를 모두 사용하기 위해 어떻게해야합니까? 모든 포인터는

TIA,
VijayRaj

답변

0

이 문제는 작업 API 관련이 .. 감사합니다. 다행히도, 그것은 쉬운 수정입니다. 호출하려는 메소드 setAllowEmptyContent은 버전 1.11에서는 더 이상 사용되지 않으며 1.12에서는 제거되었습니다. 메소드 이 사용중인 클라이언트 라이브러리 jar에 존재하지 않기 때문에 NoSuchMethodError이 표시됩니다.

버전 1.11에서 해당 방법에 대한 javadoc의 당으로, 대신 다음을 사용 :

setContent(new EmptyContent()) 

Here is the source and javadoc for that method as of version 1.11합니다. 거기에 관련 비추천 경고가 표시됩니다.

+0

코드를 볼 수 있듯이 어디에서나 해당 메서드를 사용하고 있지 않습니다 ... 내부적으로 호출 될 수 있습니다 .... plz 코드 예제를 제공하거나 인증 방법을 찾을 수있는 링크를 가리킬 수 있습니까? 최신 자바 클라이언트 라이브러리를 사용하는 태스크 서비스 객체? – VijayRaj

+1

OAuthHmacSigner 및 GoogleOAuthDomainWideDelegation과 같이 오래된 클래스가 많이 사용됩니다.이 클래스는 몇 년 전부터 라이브러리에 포함되지 않았습니다. 프로젝트를 어떻게 설정했는지 모르겠지만 라이브러리의 소스 코드는 모두 오픈 소스입니다. 소스 jar를 다운로드하고 디버그 할 수 있어야합니다. 코드를 살펴보고 메소드가 호출되는 위치를 확인하십시오. –

+0

작업 서비스로 인증하는 경우 다른 많은 Google 서비스에서 인증하는 것과 거의 동일합니다. [Calendar Sample] (https : //)과 같은 라이브러리의 [samples] (https://code.google.com/p/google-api-java-client/source/browse?repo=samples)를 확인하십시오. code.google.com/p/google-api-java-client/source/browse/calendar-cmdline-sample/src/main/java/com/google/api/services/samples/calendar/cmdline/CalendarSample.java? repo = samples # 68) 사용자가 앱 권한을 부여하라는 메시지가 표시되는 표준 three-legged OAuth 예제 –