我想在我的Android应用程序中集成Google Reader。 请帮我说明怎么做?
答案 0 :(得分:10)
希望这会有所帮助:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
String auth = getGoogleAuthKey("<your gmail email address>","<your password>");
String token = getGoogleToken(auth);
String result = postToGoogleReader(token, auth);
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(result);
}catch(Exception e){
}
}
protected String getGoogleAuthKey(String _USERNAME, String _PASSWORD) {
String responseString = "";
URL url;
try {
//open the connection
url = new URL("https://www.google.com/accounts/ClientLogin");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
urlConnection.setUseCaches(false);
urlConnection.setDoOutput(true);
//create the body
StringBuilder sb = new StringBuilder();
sb.append("accountType=");
sb.append("GOOGLE");
sb.append("&Email=");
sb.append(_USERNAME);
sb.append("&Passwd=");
sb.append(_PASSWORD);
sb.append("&service=");
sb.append("reader");
sb.append("&source=");
sb.append("<your app name>");
//make a request and retrieve results
OutputStream outputStream = urlConnection.getOutputStream();
outputStream.write(sb.toString().getBytes("UTF-8"));
outputStream.close();
sb = null;
int responseCode = urlConnection.getResponseCode();
InputStream inputStream;
if (responseCode == HttpURLConnection.HTTP_OK) {
inputStream = urlConnection.getInputStream();
responseString = convertStreamToString(inputStream);
String _AUTHKEY = responseString.substring(responseString.indexOf("Auth="), responseString.length());
responseString = _AUTHKEY.replace( "Auth=","" );
inputStream.close();
urlConnection.disconnect();
}else {
urlConnection.disconnect();
return "error";
}
} catch (Exception e) {
return e.getMessage();
}
Log.d("GoogleReader", "Auth.a=" + responseString);
return responseString.trim();
}
public String getGoogleToken(String authorization) {
final String googleReaderTokenUrl = "https://www.google.com/reader/api/0/token";
String responseString = "";
URL url;
try {
//open the connection
url = new URL(googleReaderTokenUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
Log.d("GoogleReader", "Auth.b=" + authorization);
urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization);
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
urlConnection.setUseCaches(false);
urlConnection.setDoOutput(true);
try {
InputStream inputStream = new BufferedInputStream(urlConnection.getInputStream());
responseString = convertStreamToString(inputStream);
}catch(Exception e){
int responseCode = urlConnection.getResponseCode();
return Integer.toString(responseCode);
//return e.getMessage();
}finally {
urlConnection.disconnect();
}
} catch (Exception e) {
return e.getMessage();
}
return responseString;
}
public String postToGoogleReader(String token, String authorization){
final String googleAuthUrl = "http://www.google.com/reader/api/0/item/edit";
String responseString = "";
URL url;
try {
//create the body
StringBuilder sb = new StringBuilder();
sb.append("accountType=");
sb.append("GOOGLE");
sb.append("&snippet=");
sb.append(URLEncoder.encode("TheSnippet", "UTF-8"));
sb.append("&T=");
sb.append(URLEncoder.encode(token, "UTF-8"));
sb.append("&share=");
sb.append(false);
sb.append("&url=");
sb.append(URLEncoder.encode("http://developer.android.com/index.html", "UTF-8"));
sb.append("&title=");
sb.append(URLEncoder.encode("TheTitle", "UTF-8"));
sb.append("&srcTitle=");
sb.append(URLEncoder.encode("TheSource", "UTF-8"));
sb.append("&srcUrl=");
sb.append(URLEncoder.encode("www.your_web_site", "UTF-8"));
//open the connection
url = new URL(googleAuthUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
Log.d("GoogleReader", "Auth.c=" + authorization);
urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization);
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
urlConnection.setRequestProperty("Content-Length", Integer.toString(sb.toString().getBytes("UTF-8").length));
urlConnection.setUseCaches(false);
urlConnection.setDoOutput(true);
//make a request and retrieve results
OutputStream outputStream = urlConnection.getOutputStream();
outputStream.write(sb.toString().getBytes("UTF-8"));
outputStream.close();
sb = null;
int responseCode = urlConnection.getResponseCode();
InputStream inputStream;
if (responseCode == HttpURLConnection.HTTP_OK) {
inputStream = urlConnection.getInputStream();
responseString = convertStreamToString(inputStream);
inputStream.close();
urlConnection.disconnect();
}else {
inputStream = urlConnection.getInputStream();
responseString = convertStreamToString(inputStream);
urlConnection.disconnect();
return "error";
}
} catch (Exception e) {
return e.getMessage();
}
return responseString;
}
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}