Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过ISBN搜索Google图书API_Java_Isbn_Google Books Api - Fatal编程技术网

Java 通过ISBN搜索Google图书API

Java 通过ISBN搜索Google图书API,java,isbn,google-books-api,Java,Isbn,Google Books Api,我正试图找出如何使用GoogleBooksAPI搜索ISBN出版的书籍。我需要编写一个程序,搜索ISBN,然后打印出标题、作者和版本。我尝试使用List volumesList=books.volumes.List(“”)但这不允许我按ISBN进行搜索,我也看不到获得所需信息的方法(当ISBN放在里面时没有结果)。我现在得到的是: JsonFactory jsonFactory = new JacksonFactory(); final Books books = ne

我正试图找出如何使用GoogleBooksAPI搜索ISBN出版的书籍。我需要编写一个程序,搜索ISBN,然后打印出标题、作者和版本。我尝试使用
List volumesList=books.volumes.List(“”)
但这不允许我按ISBN进行搜索,我也看不到获得所需信息的方法(当ISBN放在里面时没有结果)。我现在得到的是:

    JsonFactory jsonFactory = new JacksonFactory();     
    final Books books = new Books(new NetHttpTransport(), jsonFactory);
    List volumesList = books.volumes.list("9780262140874");

    volumesList.setMaxResults((long) 2);

    volumesList.setFilter("ebooks");
    try
    {
        Volumes volumes = volumesList.execute();
        for (Volume volume : volumes.getItems()) 
        {
            VolumeVolumeInfo volumeInfomation = volume.getVolumeInfo();
            System.out.println("Title: " + volumeInfomation.getTitle());
            System.out.println("Id: " + volume.getId());
            System.out.println("Authors: " + volumeInfomation.getAuthors());
            System.out.println("date published: " + volumeInfomation.getPublishedDate());
            System.out.println();
        }

    } catch (Exception ex) {
        // TODO Auto-generated catch block
        System.out.println("didnt wrork "+ex.toString());
    }
如果有人对如何提高效率有任何建议,请告诉我。 新代码:

    String titleBook="";

    ////////////////////////////////////////////////
    try
    {                               
        BooksService booksService = new BooksService("UAH");
        String isbn = "9780262140874";
        URL url = new URL("http://www.google.com/books/feeds/volumes/?q=ISBN%3C" + isbn + "%3E");
        VolumeQuery volumeQuery = new VolumeQuery(url);
        VolumeFeed volumeFeed = booksService.query(volumeQuery, VolumeFeed.class);
        VolumeEntry bookInfo=volumeFeed.getEntries().get(0);

        System.out.println("Title: " + bookInfo.getTitles().get(0));
        System.out.println("Id: " + bookInfo.getId());
        System.out.println("Authors: " + bookInfo.getAuthors());
        System.out.println("Version: " + bookInfo.getVersionId());
        System.out.println("Description: "+bookInfo.getDescriptions()+"\n");
        titleBook= bookInfo.getTitles().get(0).toString();
        titleBook=(String) titleBook.subSequence(titleBook.indexOf("="), titleBook.length()-1);
    }catch(Exception ex){System.out.println(ex.getMessage());}
    /////////////////////////////////////////////////
    JsonFactory jsonFactory = new JacksonFactory();     
    final Books books = new Books(new NetHttpTransport(), jsonFactory);
    List volumesList = books.volumes.list(titleBook);   
    try
    {
        Volumes volumes = volumesList.execute();
        Volume bookInfomation= volumes.getItems().get(0);

        VolumeVolumeInfo volumeInfomation = bookInfomation.getVolumeInfo();
        System.out.println("Title: " + volumeInfomation.getTitle());
        System.out.println("Id: " + bookInfomation.getId());
        System.out.println("Authors: " + volumeInfomation.getAuthors());
        System.out.println("date published: " + volumeInfomation.getPublishedDate());
        System.out.println();

    } catch (Exception ex) {
        System.out.println("didnt wrork "+ex.toString());
    }

如果我理解你的任务,你就不能像《开发者指南》中说的那样尝试吗。您可以这样做:

BooksService booksService = new BooksService("myCompany-myApp-1");
myService.setUserCredentials("user@domain.com", "secretPassword");

String isbn = "9780552152679";
URL url = new URL("http://www.google.com/books/feeds/volumes/?q=ISBN%3C" + isbn + "%3E");
VolumeQuery volumeQuery = new VolumeQuery(url);
VolumeFeed volumeFeed = booksService.query(volumeQuery, VolumeFeed.class);

// using an ISBN in query gives only one entry in VolumeFeed
List<VolumeEntry> volumeEntries = volumeFeed.getEntries();
VolumeEntry entry = volumeEntries.get(0);
bookservice bookservice=新的bookservice(“myCompany-myApp-1”);
myService.setUserCredentials(“user@domain.com“,”秘密密码“);
字符串isbn=“9780552152679”;
URL=新URL(“http://www.google.com/books/feeds/volumes/?q=ISBN%3C“+isbn+%3E”);
VolumeQuery VolumeQuery=新的VolumeQuery(url);
VolumeFeed VolumeFeed=booksService.query(volumeQuery,VolumeFeed.class);
//在查询中使用ISBN只会在VolumeFeed中提供一个条目
List volumeEntries=volumeefeed.getEntries();
VolumeEntry条目=volumeEntries.get(0);
现在使用api查找所需的getXXXX(),并在代码中使用它。我希望它能帮助您解决问题。

您是否正在使用

使用(来自实验室)您可以使用查询

https://www.googleapis.com/books/v1/volumes?q=isbn:<your_isbn_here>
https://www.googleapis.com/books/v1/volumes?q=isbn:
比如说

按ISBN查询一本书

您可能想看看谷歌的示例代码:

$(“表格”)。提交(
职能(e){
e、 预防默认值();
var isbn=$('#isbn').val();
var isbn_不带连字符=isbn。替换(/-/g,“”);
var googleAPI=”https://www.googleapis.com/books/v1/volumes?q=“+isbn_,不带连字符;
$.getJSON(googleAPI,函数(响应){
如果(响应的类型.项目==“未定义”){
警告(“没有与ISBN匹配的书籍”)
}否则{
$(“#title”).html(response.items[0].volumeInfo.title);
$(“#author”).html(response.items[0].volumeInfo.authors[0]);
$(“#publishedDate”).html(response.items[0].volumeInfo.publishedDate);
}
});
}
);

输入ISBN:
标题:

作者:

发布日期:
您建议的方式是针对HTML而不是java。BooksSample的方式与上面相同,不允许通过ISBN.List volumesList=books.volumes.List(查询)进行搜索。他们使用的代码也是一个字符串。查询使用HTTP GET请求并接收JSON格式的响应,JSON格式与语言无关,在Java中常用。没有涉及HTML。请注意:返回“totalItems”:78冒号fwd!难以置信的是,在某个地方没有记录(至少我没有找到它)进行精确搜索并返回“totalItems”:1。科隆前进!真不敢相信在什么地方没有记录(至少我没找到)@masi谢谢。我相应地更改了查询字符串。@masi:谢谢!请注意,它也是区分大小写的,因此
q=ISBN:9780321694690
将返回长列表,而
q=ISBN:97803216940
将返回特定匹配项。您的回答非常有效,它为我找到了带有相应ISBN的正确书名。然而,当我调用bookInfo.getAuthors()时,它返回了一个空白列表。打印时,它看起来像以下“作者:[]”可以执行bookInfo.getCreators()?它应该返回一个创建者列表作为创建者的实例。然后你可以找到作者。也许它会起作用,因为我没有试过。试试看。我能用上面的新代码让它工作。谢谢你的帮助。我刚刚尝试了getCreatos,它将我的代码一分为二。谢谢。我不确定BooksService类型是从哪里来的