2013-08-22 17 views
5

Po wielu próbach importowania bibliotek w końcu udało mi się przekonać, że mogę to zrobić za pomocą wtyczki Google for Eclipse, here.Jak korzystać z interfejsu Google URL Shortener API w systemie Android?

Jednak wydaje mi się, że nie mogę znaleźć przykładów tego, jak właściwie używać API na Androida, a przynajmniej nie można ich skompilować, ponieważ klasy wymagane w tych przykładach wydają się nierozpoznawalne przez Eclipse, więc mogę załóżmy, że te klasy nie istnieją w bibliotekach zaimportowanych przez Google Plugin for Eclipse dla API Skracacza URL. Najbliższy przykład, jaki mogłem znaleźć, to here, który wydaje się być dla Google App Engine, a nie Androida i używa klas, do których nie mogę uzyskać dostępu.

Pytanie brzmi, w jaki sposób mogę użyć tego interfejsu API, aby uzyskać skróconą wersję adresu URL w aplikacji na Androida? Najlepiej, chciałbym to zrobić za pomocą klucza API, zamiast OAuth.

Odpowiedz

4
  1. dodać do manifestu w application węzła:
<meta-data 
     android:name="com.google.android.urlshortener.API_KEY" 
     android:value="{YOUR_API_KEY}"/> 
  1. add folowing biblioteki:

google- api-client-1.17.0-rc.jar

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

google-API-services-urlshortener-v1-rev22-1.17.0-rc.jar

google-http-client -1.17.0-rc.jar

pomocną HTTP, klient Android 1.17.0-rc.jar

  1. metoda:

    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

Kiedyś to bez dodawania czegokolwiek do manifestu i nadal pracował. –

+1

Czy jest jakiś sposób na przedłużenie adresu URL z krótkiego? – Anirban

+1

Zamiast dodawać wszystkie te biblioteki, właśnie wysyłam prośbę o dodanie krótkiego adresu URL. Działa dobrze. Proszę zasugerować mi, którego użyć? –

3

Teraz Google krótszy api potrzebuje klucza do pracy. Próbowałem ustawić klucz w manifeście, ale to nie działa. Klucz powinien być ustawiony przez bibliotekę funkcji.

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

Najpierw utwórz projekt na konsoli google i umożliwić url shortner API i otrzymać klucz API i wykorzystanie następujących Asynctask aby uzyskać skrócony URL.

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; 




     } 
    } 

a potem po prostu wykonać to asynctask dostaniesz responce json, w którym identyfikator jest obecny, który jest niczym innym jak skrócony URL.

+0

Dziękujemy @Satish –

+0

ua welcome @ParthAnjaria –

+0

{"błąd": {"wiadomość": "Nieprawidłowa wartość", "kod": 400, "błędy": [{"wiadomość": "Nieprawidłowa wartość", "domena" : "global", "location": "resource.longUrl", "reason": "invalid", "locationType": "parameter"}]}} pomóżcie mi! –

Powiązane problemy