2013-08-22 27 views
5

Sau nhiều lần không quan tâm đến việc tự mình nhập các thư viện, cuối cùng tôi đã tìm ra được rằng tôi có thể làm như vậy bằng cách sử dụng Plugin Google cho Eclipse, here. Tuy nhiên, tôi dường như không thể tìm thấy bất kỳ ví dụ nào về cách sử dụng API trên Android, ít nhất là không có gì có thể biên dịch được, vì các lớp được yêu cầu trong các ví dụ đó dường như không được giải quyết bởi Eclipse, vì vậy tôi có thể chỉ giả định rằng các lớp này không tồn tại trong các thư viện được nhập bởi Plugin Google cho Eclipse cho API rút ngắn URL. Điều gần nhất với ví dụ tôi có thể tìm thấy là here, dường như là dành cho Google App Engine chứ không phải Android và sử dụng các lớp mà tôi dường như không thể truy cập.Tôi làm cách nào để sử dụng API rút gọn URL của Google trên Android?

Vì vậy, câu hỏi là, làm cách nào để sử dụng API này để nhận phiên bản rút gọn của URL, trong ứng dụng Android? Tốt hơn là tôi muốn làm điều đó bằng cách sử dụng Khóa API thay vì OAuth.

Trả lời

4
  1. thêm vào biểu hiện của bạn trong application nút:
<meta-data 
     android:name="com.google.android.urlshortener.API_KEY" 
     android:value="{YOUR_API_KEY}"/> 
  1. add folowing thư viện:

google- api-client-1.17.0-rc.jar

google-api-client-android-1.17.0-rc.jar

google-api-dịch vụ-urlshortener-v1-rev22-1.17.0-rc.jar

google-http-client -1.17.0-rc.jar

google-http-client-android-1.17.0-rc.jar

  1. phương pháp:

    String shorten(String longUrl){ 
    
        Urlshortener.Builder builder = new Urlshortener.Builder (AndroidHttp.newCompatibleTransport(), AndroidJsonFactory.getDefaultInstance(), null); 
        Urlshortener urlshortener = builder.build(); 
    
        com.google.api.services.urlshortener.model.Url url = new Url(); 
        url.setLongUrl(longUrl); 
        try { 
         url = urlshortener.url().insert(url).execute(); 
         return url.getId(); 
        } catch (IOException e) { 
         return null; 
        } 
    } 
    
+0

Tôi sử dụng này mà không cần thêm bất cứ điều gì để biểu hiện và nó vẫn làm việc. –

+1

Có cách nào để kéo dài url không? – Anirban

+1

Thay vì thêm tất cả thư viện này, tôi chỉ gửi yêu cầu đăng bài để nhận url ngắn. Nó hoạt động tốt. Xin đề nghị tôi sử dụng cái nào? –

3

Hiện tại, api ngắn hơn của Google cần có chìa khóa để hoạt động. Tôi đã thử đặt khóa trong tệp kê khai nhưng không hoạt động. Khóa nên được đặt bởi thư viện hàm.

Urlshortener.Builder builder = new Urlshortener.Builder (AndroidHttp.newCompatibleTransport(), 
      AndroidJsonFactory.getDefaultInstance(), null); 
    Urlshortener urlshortener = builder.build(); 

    com.google.api.services.urlshortener.model.Url url = new com.google.api.services.urlshortener.model.Url(); 
    url.setLongUrl(longUrl); 
    try { 
     Urlshortener.Url.Insert insert=urlshortener.url().insert(url); 
     insert.setKey("Your API KEY"); 
     url = insert.execute(); 
     return url.getId(); 
    } catch (IOException e) { 
     LogUtil.e(TAG, Log.getStackTraceString(e)); 
     return null; 
    } 
5

Đầu tiên tạo dự án trên bảng điều khiển google và bật api rút ngắn url và nhận khóa api và sử dụng Asynctask sau để nhận url rút gọn.

public class newShortAsync extends AsyncTask<Void,Void,String> { 

     String longUrl="http://stackoverflow.com/questions/18372672/how-do-i-use-the-google-url-shortener-api-on-android/20406915"; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      progressBar.setVisibility(View.VISIBLE); 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      progressBar.setVisibility(View.GONE); 
      System.out.println("JSON RESP:" + s); 
      String response=s; 
      try { 
       JSONObject jsonObject=new JSONObject(response); 
       id=jsonObject.getString("id"); 
       System.out.println("ID:"+id); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     protected String doInBackground(Void... params) { 
      BufferedReader reader; 
      StringBuffer buffer; 
      String res=null; 
      String json = "{\"longUrl\": \""+longUrl+"\"}"; 
      try { 
       URL url = new URL("https://www.googleapis.com/urlshortener/v1/url?key=YOUR_API_KEY"); 
       HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
       con.setReadTimeout(40000); 
       con.setConnectTimeout(40000); 
       con.setRequestMethod("POST"); 
       con.setRequestProperty("Content-Type", "application/json"); 
       OutputStream os = con.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, "UTF-8")); 

       writer.write(json); 
       writer.flush(); 
       writer.close(); 
       os.close(); 

       int status=con.getResponseCode(); 
       InputStream inputStream; 
       if(status==HttpURLConnection.HTTP_OK) 
       inputStream=con.getInputStream(); 
       else 
        inputStream = con.getErrorStream(); 

       reader= new BufferedReader(new InputStreamReader(inputStream)); 

       buffer= new StringBuffer(); 

       String line=""; 
       while((line=reader.readLine())!=null) 
       { 
        buffer.append(line); 
       } 

       res= buffer.toString(); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (ProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return res; 




     } 
    } 

và sau đó chỉ cần thực hiện asynctask này, bạn sẽ nhận được phản hồi json trong đó id hiện diện không có gì ngoài url được rút ngắn.

+0

Cảm ơn bạn @Satish –

+0

ua chào mừng @ParthAnjaria –

+0

{"lỗi": {"nội dung": "Giá trị không hợp lệ", "mã": 400, "lỗi": [{"nội dung": "Giá trị không hợp lệ", "tên miền" : "global", "location": "resource.longUrl", "reason": "invalid", "locationType": "parameter"}]}} giúp tôi! –

Các vấn đề liên quan