Как использовать Google URL Shortener API на Android?
После долгих попыток самостоятельно импортировать библиотеки, мне, наконец, удалось выяснить, что я могу сделать это, используя плагин Google для Eclipse, здесь.
Однако мне кажется, что я не могу найти каких-либо примеров того, как на самом деле использовать API на Android, по крайней мере, ни одного из них, которые можно скомпилировать, поскольку классы, требуемые в этих примерах, не могут быть разрешены Eclipse, поэтому я могу только предположить, что они классы не существуют в библиотеках, которые импортируются плагином Google для Eclipse для API URL Shortener. Наиболее близкий пример к тому, что я мог найти, - здесь, который, по-видимому, предназначен для Google App Engine, а не Android, и использует классы, к которым я не могу получить доступ.
Итак, вопрос в том, как использовать этот API для получения сокращенной версии URL-адреса в приложении Android? Желательно, чтобы я делал это, используя ключ API, а не OAuth.
4 ответа
Сначала создайте проект в консоли Google и включите URL-адрес URL-адреса сокращенного URL-адреса и получите ключ API-интерфейса и используйте следующую Asynctask для получения сокращенного URL-адреса.
public class newShortAsync extends AsyncTask<Void,Void,String> {
String longUrl="http://stackru.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;
}
}
и затем просто выполните эту асинктическую задачу, вы получите ответ json, в котором присутствует идентификатор, который является ничем иным, как сокращенным URL-адресом.
Теперь Google короче API нужен ключ для работы. Я попытался установить ключ в манифесте, но он не работает. Ключ должен быть установлен библиотекой функций.
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;
}
- добавить к вашему манифесту в
application
узел:
<meta-data android:name="com.google.android.urlshortener.API_KEY" android:value="{YOUR_API_KEY}"/>
- добавить следующие библиотеки:
Google-апи-клиент-1.17.0-rc.jar
Google-апи-клиент-андроид-1.17.0-rc.jar
Google-API-сервисов urlshortener-v1-rev22-1.17.0-rc.jar
Google-HTTP-клиент-1.17.0-rc.jar
Google-HTTP-клиент-андроид-1.17.0-rc.jar
метод:
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; } }
Вы также можете использовать Gradle, по-видимому
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.apis:google-api-services-urlshortener:v1-rev47-1.22.0'
}