我正在尝试使用Google Book API。但是我不断收到错误:
“未找到KeyStore JKS实施”
该代码直接来自Google Books API示例和(根据StorageServiceAccountSample application reports "KeyStore JKS implementation not found"),该问题似乎与GoogleNetHttpTransport.newTrustedTransport()有关。
但是,尝试使用该线程上的答案所建议的AndroidHttp.newCompatibleTransport()将无效。
我无法找到该类的正确导入,因为com.google.api.client.extensions.android.http似乎无效。
这是我的代码:
public static void queryGoogleBooks(JsonFactory jsonFactory, String query) throws Exception {
//Set up book client
final Books books = new Books.Builder(GoogleNetHttpTransport.newTrustedTransport(), jsonFactory, null)
.setApplicationName("Books++")
.setGoogleClientRequestInitializer(new BooksRequestInitializer(ClientCredentials.API_KEY))
.build();
List volumesList = books.volumes().list(query);
//Execute
Volumes volumes = volumesList.execute();
if (volumes.getTotalItems() == 0 || volumes.getItems() == null) {
System.out.println("No matches found.");
return;
}
// Output results.
for (Volume volume : volumes.getItems()) {
Volume.VolumeInfo volumeInfo = volume.getVolumeInfo();
Volume.SaleInfo saleInfo = volume.getSaleInfo();
System.out.println("==========");
// Title.
System.out.println("Title: " + volumeInfo.getTitle());
// Author(s).
java.util.List<String> authors = volumeInfo.getAuthors();
if (authors != null && !authors.isEmpty()) {
System.out.print("Author(s): ");
for (int i = 0; i < authors.size(); ++i) {
System.out.print(authors.get(i));
if (i < authors.size() - 1) {
System.out.print(", ");
}
}
System.out.println();
}
// Description (if any).
if (volumeInfo.getDescription() != null && volumeInfo.getDescription().length() > 0) {
System.out.println("Description: " + volumeInfo.getDescription());
}
// Ratings (if any).
if (volumeInfo.getRatingsCount() != null && volumeInfo.getRatingsCount() > 0) {
int fullRating = (int) Math.round(volumeInfo.getAverageRating().doubleValue());
System.out.print("User Rating: ");
for (int i = 0; i < fullRating; ++i) {
System.out.print("*");
}
System.out.println(" (" + volumeInfo.getRatingsCount() + " rating(s))");
}
// Price (if any).
if (saleInfo != null && "FOR_SALE".equals(saleInfo.getSaleability())) {
double save = saleInfo.getListPrice().getAmount() - saleInfo.getRetailPrice().getAmount();
if (save > 0.0) {
System.out.print("List: " + CURRENCY_FORMATTER.format(saleInfo.getListPrice().getAmount())
+ " ");
}
System.out.print("Google eBooks Price: "
+ CURRENCY_FORMATTER.format(saleInfo.getRetailPrice().getAmount()));
if (save > 0.0) {
System.out.print(" You Save: " + CURRENCY_FORMATTER.format(save) + " ("
+ PERCENT_FORMATTER.format(save / saleInfo.getListPrice().getAmount()) + ")");
}
System.out.println();
}
// Access status.
String accessViewStatus = volume.getAccessInfo().getAccessViewStatus();
String message = "Additional information about this book is available from Google eBooks at:";
if ("FULL_PUBLIC_DOMAIN".equals(accessViewStatus)) {
message = "This public domain book is available for free from Google eBooks at:";
} else if ("SAMPLE".equals(accessViewStatus)) {
message = "A preview of this book is available from Google eBooks at:";
}
System.out.println(message);
// Link to Google eBooks.
System.out.println(volumeInfo.getInfoLink());
}
System.out.println("==========");
System.out.println(
volumes.getTotalItems() + " total results at http://books.google.com/ebooks?q="
+ URLEncoder.encode(query, "UTF-8"));
}
并给出错误:
java.security.NoSuchAlgorithmException: KeyStore JKS implementation not found
任何帮助都将不胜感激。
谢谢,
答案 0 :(得分:0)
尝试
替换
GoogleNetHttpTransport.newTrustedTransport()
与
new ApacheHttpTransport()