2011-08-31 19 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 –