找了好久好久終於找到一個開源的嘀咕網Android用戶端源碼,因為之前沒做過這方面的應用,所有都得從頭學。在開始這一篇的內容前,看過了很多關於android平台網路連接的文章,卻老是不得要領,我覺得自己最主要的原因是:一對java.net.*等介面的不熟悉,其實說白了就是對Http協議不瞭解,第二是嘀咕網的api不知道怎麼使用。直到看了Android之基於HTTP協議的下載這篇文章,大概的瞭解了Http協議的一些基本資料,再去看kirin的源碼,才算真正理解了怎樣實現登入的這樣一個過程。所以我極力的推薦大家去看看這篇文章和這份代碼。
下面這段代碼就是一個初步實現嘀咕網驗證登入的過程,登入成功後會顯示使用者的四個基本資料我這裡請求的是一個xml資料,具體請看API,並且這裡cbin的密碼被我以為xxxx代替了,建議大家自己去註冊一個嘀咕網賬戶,我這裡是通過伺服器返回的狀態代碼直接判斷是否登入成功,在用kirin那種方式的時候,假如是使用者名稱和密碼錯誤會報一個異常,也就是嚴格來說它的登入還是有點問題的,我這種方式就是憑我個人對於Android之基於HTTP協議的下載 中的Status code等於401的理解,不知道這樣處理是否合理。
代碼
private boolean LoginDidu(){
String spec="http://api.minicloud.com.cn/account/verify.xml?isAllInfo=false";
try {
URL url=new URL(spec);
HttpURLConnection connect=(HttpURLConnection)url.openConnection();
//設定讀取伺服器資源許可權
connect.setDoOutput(true);
//設定串連伺服器逾時時間長度
connect.setConnectTimeout(10*1000);
//設定從伺服器讀取資源逾時時間長度
connect.setReadTimeout(30*1000);
//佈建要求方法
connect.setRequestMethod("GET");
//Authorization請求前序域主要用於證明用戶端有權查看某個資源
//用於嘀咕網使用者認證(詳情請看嘀咕API:http://code.google.com/p/digu-api/wiki/DiguApi)
String user="cbin:xxxx";
connect.setRequestProperty("Authorization", "Basic "+Base64.encodeBytes(user.getBytes()));
int code=connect.getResponseCode();
Log.v(tag, "code----------"+code);
if(code>=0 && code<299){
connect.connect();
InputStream is=connect.getInputStream();
InputStreamReader isr=new InputStreamReader(is, "utf-8");
BufferedReader br=new BufferedReader(isr);
StringBuffer sb=new StringBuffer();
String readLine=null;
while((readLine=br.readLine())!=null){
sb.append(readLine).append("\n");
}
showText=new String(sb.toString().getBytes("utf-8"), "utf-8");
return true;
}else if(code==401){
//伺服器返回狀態代碼如果等於401表示授權未通過(也就是登入失敗)
return false;
}
Log.v(tag, "code-----------"+code);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}