2011-10-26 10 views
21

द्वारा Google पुस्तकें एपीआई खोज कर रहा है मैं Google पुस्तकें API का उपयोग करके आईएसबीएन द्वारा पुस्तक की खोज कैसे करें, यह जानने का प्रयास कर रहा हूं। मुझे एक प्रोग्राम लिखना है जो एक आईएसबीएन की खोज करता है, फिर शीर्षक, लेखक और संस्करण को प्रिंट करता है। मैंने List volumesList = books.volumes.list(""); का उपयोग करने की कोशिश की लेकिन उसने मुझे आईएसबीएन द्वारा खोज करने की अनुमति नहीं दी और मुझे आवश्यक जानकारी प्राप्त करने का कोई तरीका नहीं मिला (जब एक आईएसबीएन रखा गया था तो इसका कोई परिणाम नहीं था)। मेरे पास अभी क्या है:आईएसबीएन

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()); 
    } 

उत्तर

39

क्या आप deprecated data API का उपयोग कर रहे हैं?

Books API v1 साथ

(लैब से) आप इसका ISBN द्वारा एक पुस्तक क्वेरी करने के लिए उदाहरण

https://www.googleapis.com/books/v1/volumes?q=isbn:0735619670

के लिए क्वेरी

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

इस्तेमाल कर सकते हैं।

आप Googles उदाहरण कोड को देखने के लिए चाहते हो सकता है: BooksSample.java

+0

से आ रहा है, जिस तरह से आपने सुझाव दिया है HTML के लिए जावा नहीं है। जिस तरह से BooksSample करता है वही है जैसा कि मैंने ऊपर किया है और आईएसबीएन द्वारा खोज की अनुमति नहीं देता है। सूची वॉल्यूमलिस्ट = books.volumes.list (क्वेरी) वह कोड है जिसका उपयोग वे क्वेरी भी करते हैं एक स्ट्रिंग है। –

+9

क्वेरी HTTP GET अनुरोध का उपयोग करती है और JSON प्रारूप में प्रतिक्रिया प्राप्त करती है, जो भाषा-स्वतंत्र और आमतौर पर जावा में उपयोग की जाती है। इसमें कोई HTML शामिल नहीं है। – Chris

+1

कृपया ध्यान दें: https://www.googleapis.com/books/v1/volumes?q=isbn0735619670 वापसी "कुल आय": 78 कोलन fwd! विश्वास नहीं कर सकता है कि कहीं भी दस्तावेज नहीं किया गया है (कम से कम मुझे यह नहीं मिला) https://www.googleapis.com/books/v1/volumes?q=isbn <0735619670> "कुल आइटम्स" देता है: 511 लेकिन https: //www.googleapis.com/books/v1/volumes?q=isbn:0735619670 एक सटीक खोज करता है और "कुल इटम्स" देता है: 1. कॉलन एफडब्ल्यूडी! विश्वास नहीं कर सकता है कि कहीं कहीं दस्तावेज नहीं किया गया है (कम से कम मुझे यह नहीं मिला) – masi

4

आप इस रूप में डेवलपर्स में कहा तरह की कोशिश नहीं कर सकते developer guide मार्गदर्शन करता है, तो मैं अपने कार्य को समझ में आया। आप इस तरह कर सकते हैं:

BooksService booksService = new BooksService("myCompany-myApp-1"); 
myService.setUserCredentials("[email protected]", "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); 

अब अपने वांछित getXXXX (के लिए VolumeEntry एपीआई नज़र प्रयोग करके) और इसका इस्तेमाल में अपने code.I आशा है कि यह आप अपनी समस्या को हल करने में मदद मिलेगी।

+1

आपका जवाब बहुत अच्छी तरह से काम किया है यह मेरे संगत ISBN के साथ पुस्तक की सही शीर्षक मिल गया। हालांकि जब भी मैंने bookInfo.getAuthors() को बुलाया तो यह एक खाली सूची लौटा दी। मुद्रित होने पर यह निम्नलिखित "लेखकों की तरह दिखता है: []" –

+1

bookInfo.getCreators() कर सकता है? इसे निर्माता की सूची के रूप में रचनाकारों की एक सूची वापस करनी चाहिए। फिर आप लेखकों को प्राप्त कर सकते हैं। हो सकता है कि यह काम करेगा क्योंकि मैंने कोशिश नहीं की थी। आजमाइश कीजिये। – Shahriar

+0

मैं इसे उपरोक्त नए कोड के साथ काम करने में सक्षम था। आपकी सहायता के लिए धन्यवाद. –

संबंधित मुद्दे

 संबंधित मुद्दे