library - No se encontrĂ³ la API de cliente de Android y Google NetHttptransport Class
library api (4)
Intento usar la biblioteca de API generada por Google por primera vez para Android. He tomado el código del Programa de muestra proporcionado por Google . Mi código parece
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
// Core Google API
import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAuthorizationRequestUrl;
import com.google.api.client.http.ByteArrayContent;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
// Google+ API
import com.google.api.services.plus.*;
public class GooglePlusActivity extends Activity {
// Want data about authenticated user
private static final String SCOPE = "https://www.googleapis.com/auth/plus.me";
//
private static final String CALLBACK_URL = "urn:ietf:wg:oauth:2.0:oob";
//
private static final HttpTransport TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
private static final String CLIENT_ID = "XXXXXXXXXXXXXXX";
private static final String CLIENT_SECRET = "XXXXXXXXXXXXXX";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Generate the URL to which we will direct users
String authorizeUrl = new GoogleAuthorizationRequestUrl(CLIENT_ID,
CALLBACK_URL, SCOPE).build();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
String authorizationCode = in.readLine();
// Exchange for an access and refresh token
GoogleAuthorizationCodeGrant authRequest = new GoogleAuthorizationCodeGrant(TRANSPORT,
JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authorizationCode, CALLBACK_URL);
authRequest.useBasicAuthorization = false;
AccessTokenResponse authResponse = authRequest.execute();
String accessToken = authResponse.accessToken;
GoogleAccessProtectedResource access = new GoogleAccessProtectedResource(accessToken,
TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authResponse.refreshToken);
HttpRequestFactory rf = TRANSPORT.createRequestFactory(access);
System.out.println("Access token: " + authResponse.accessToken);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Plus plus = new Plus(new NetHttpTransport(), new JacksonFactory());
}
}
Sin embargo, la siguiente línea:
private static final HttpTransport TRANSPORT = new NetHttpTransport();
causa una excepción:
10-04 13:33:28.954: ERROR/AndroidRuntime(5925): Caused by: java.lang.NoClassDefFoundError: com.google.api.client.http.javanet.NetHttpTransport
Tengo las siguientes bibliotecas agregadas a la ruta de compilación:
google-api-client-1.5.0-beta.jar google-api-services-plus-v1-1.2.2-beta.jar
y estas bibliotecas de dependencia:
guava-r09 httpclient-4.0.3 jackson-core-asl-1.6.7 gson-1.6
Agregué las dependencias solo por desesperación ... ya que no puedo ver que las necesito. Todas mis declaraciones de importación se resuelven correctamente en el momento de la compilación, entonces ¿por qué debería obtener este error?
Estoy usando Eclipse Indigo en Windows 7.
Agregué los siguientes archivos jar:
google-api-client-1.5.0-beta
google-api-client-extensions-1.5.0-beta
google-api-client-extensions-android2-1.5.0-beta
google-api-services-plus-v1-1.2.2-beta
google-http-client-1.5.0-beta
google-http-client-extensions-1.5.0-beta
google-http-client-extensions-android2-1.5.0-beta
google-oauth-client-1.5.0-beta
google-oauth-client-extensions-1.5.0-beta
gson-1.6
guava-r09
httpclient-4.0.3
httpcore-4.0.1
jackson-core-asl-1.6.7
esto resolvió mi problema Sin embargo, todavía no estoy seguro de cómo estos archivos corresponden a la lista de bibliotecas en la página wiki y también de por qué son necesarios cuando mis importaciones se resuelven durante el tiempo de compilación.
Aquí hay una lista de las bibliotecas que debe tener en su proyecto: http://code.google.com/p/google-api-java-client/wiki/Setup
Puede ser un poco tarde para este, pero el jar que está buscando es google-http-client-1.5.0-beta.jar
Este archivo jar define com.google.api.client.http. * Y com.google.api.client.json. *
Debe agregar explícitamente la referencia de la biblioteca de google-http-client-1.5.0-beta.jar (haga clic derecho en proyecto-> Propiedades-> Ruta de compilación de Java-> Agregar JAR externos), no crea la ruta de la clase. Si no lo hace, en el archivo apk no contiene los datos requeridos.
Puede descargar la biblioteca Google plus desde aquí google-plus-java-starter_v5.zip
plus = Plus.builder(transport, jsonFactory).setApplicationName("Google-PlusSample/1.0")
.setHttpRequestInitializer(accessProtectedResource)
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
PlusRequest plusRequest = (PlusRequest) request;
plusRequest.setPrettyPrint(true);
}
}).build();
usar esto en lugar de
Plus plus = new Plus(new NetHttpTransport(), new JacksonFactory());