2011-08-31 61 views
1

我使用Maven項目具有以下依賴性:GoogleTransport類問題

<dependency> 
     <groupId>com.google.api.client</groupId> 
     <artifactId>google-api-client-googleapis-auth-clientlogin</artifactId> 
     <version>1.2.3-alpha</version> 
    </dependency> 

當我運行下面的代碼:

import java.io.IOException; 

import com.google.api.client.googleapis.GoogleTransport; 
import com.google.api.client.googleapis.auth.clientlogin.ClientLogin; 
import com.google.api.client.http.HttpRequest; 
import com.google.api.client.http.HttpResponseException; 
import com.google.api.client.http.HttpTransport; 
/** 
* Hello world! 
* 
*/ 
public class App 
{ 
    public static void main(String[] args) throws IOException 
    { 
     HttpTransport transport = GoogleTransport.create(); 
      // transport.addParser(new JsonCParser()); 
      try { 
       // authenticate with ClientLogin 
       ClientLogin authenticator = new ClientLogin(); 
       authenticator.authTokenType = "ndev"; 
       authenticator.username = "...."; 
       authenticator.password = "...."; 
       authenticator.authenticate().setAuthorizationHeader(transport); 
       // make query request 
       HttpRequest request = transport.buildGetRequest(); 
       request.setUrl("https://www.googleapis.com/bigquery/v1/query"); 
       request.url.put(
        "q", "select count(*) from [bigquery/samples/shakespeare];"); 
       System.out.println(request.execute().parseAsString()); 
      } catch (HttpResponseException e) { 
       System.err.println(e.response.parseAsString()); 
       throw e; 
      } 

    } 
} 

我得到以下異常:

Exception in thread "main" java.lang.IllegalStateException: Missing required low-level HTTP transport package. 
Use package "com.google.api.client.javanet". 
    at com.google.api.client.http.HttpTransport.useLowLevelHttpTransport(HttpTransport.java:129) 
    at com.google.api.client.http.HttpTransport.<init>(HttpTransport.java:187) 
    at com.google.api.client.googleapis.GoogleTransport.create(GoogleTransport.java:58) 
    at com.example.clientlogin.App.main(App.java:18) 

什麼GoogleTransport類有問題嗎?

回答

1

快速googeling導致maven for com.google.api.client.javanet.nethttpresponse嘗試增加

<dependency> 
    <groupId>com.google.api.client</groupId> 
    <artifactId>google-api-client</artifactId> 
    <version>1.2.3-alpha</version> 
    </dependency> 

<dependency> 
    <groupId>com.google.api.client</groupId> 
    <artifactId>google-api-client-javanet</artifactId> 
    <version>1.2.3-alpha</version> 
    </dependency> 

到您的POM文件

+0

感謝你這樣做有問題,但我得到了一個錯誤說{ 「錯誤」:{ 「錯誤」: { 「域」:「全局」, 「理由」:「authError」, 「消息」: 「無效憑證」, 「的locationType」: 「首標」, 「位置」: 「授權」 } ], 「代碼」:401, 「消息」: 「無效憑證」 } } 線程「main」中的異常com.google.api.client.http.HttpResponseException:401未授權 \t at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:209) \t at com.example.clientlogin.App.main(App.java:32) – othman

+0

我使用了正確的用戶名和密碼爲什麼會引發此錯誤? – othman

+0

是否爲b/i註釋行transport.addParser(new JsonCParser()); ?我找不到課JsonParser – othman

0

這個問題是很老,但我已經添加了一些更新我們的Java Google Client Lib + BigQuery示例(此處爲:http://code.google.com/p/google-bigquery-tools/source/browse/samples/java/gettingstarted/BigQueryJavaGettingStarted/)。

+0

您使用OAuth方法發佈的新代碼是不是原始代碼中的方法? – Jeff

+0

確切地說 - 所有Google API都已棄用ClientLogin(即用戶名和密碼)。一些(大多數?)Google API可能不再支持用戶名/密碼方法了。請參閱:https://developers.google.com/accounts/docs/AuthForInstalledApps –