熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Baidu雲盤API接口的使用使用說明

2013-11-23 19:36:16  來源: Java核心技術 

  這幾天很有興致的學習了百度雲盤文件API接口的使用初步是想做一個在線android應用應用中的文檔是存放在百度雲盤的
主要是分一下幾個步驟
    注冊百度賬號
    登錄百度開發者中心
    創建移動應用獲取對應的(API Key Secret Key)
    開通pcs API權限
    獲取ACCESS_token(認證編碼)
    開發應用
注意
    開通移動應用獲取key
    獲取token的時候我使用的安卓獲取的方式
    通過我寫對應api的例子我發現其實就兩種情況一種是get方式提交數據另外一種是post方式提交數據
    get方式提交數據我們用獲取雲盤的信息為例
    獲取雲盤信息前我們要知道我們要准備好什麼數據
請求參數
    url: 標明我們要訪問的網址路徑 值固定問
    method:標明我們是請求雲盤信息 值固定為info
    acceess_token:准入標識 值是我們自己申請的
接收返回參數
    quota:雲盤總容量
    used:雲盤使用容量
    request_id:該請求的表示沒啥用
    返回的一個json串如下格式{quota: used:request_id:}
    我在做的時候你使用Gson工具將json串轉換到對應的entity類中了 代碼如下
    [html] /**
    * @param URLConnection conn通過get方式獲取StringBuffer
    * @return
    */
    private StringBuffer getJsonString(URLConnection conn) {
    InputStreamReader isr = null;
    BufferedReader br = null;
    StringBuffer sb = null;
    try {
    isr = new InputStreamReader(conngetInputStream()gb
    br = new BufferedReader(isr)
    String line = null;
    sb = new StringBuffer()
    while ((line = brreadLine()) != null) {
    sbappend(line)
    sbappend(\r\n
    }
    } catch (UnsupportedEncodingException e) {
    eprintStackTrace()
    } catch (IOException e) {
    eprintStackTrace()
    }finally{
    try {
    if(isr!=null)
    isrclose()
    } catch (IOException e) {
    Systemoutprintln(流關閉是異常
    eprintStackTrace()
    }
    }
    return sb;
    }
    /**
    * @return
    * @throws Exception
    * 獲取雲空間的信息
    */
    public CloudInfo getCloudInfo() throws Exception {
    URL u = new URL(?method=info&access_token=你申請的token的值;
    URLConnection conn = uopenConnection()// 打開網頁鏈接
    // 獲取用戶雲盤信息
    String cloudJson = thisgetJsonString(conn)toString()

  // 解析成對象 下面有這個實體對象的類
    Gson gson = new Gson()
    CloudInfo cloudInfo = gsonfromJson(cloudJson CloudInfoclass)
    Systemoutprintln(雲盤信息+cloudInfo)
    return cloudInfo;
    }
    /**
    * @param URLConnection conn通過get方式獲取StringBuffer
    * @return
    */
    private StringBuffer getJsonString(URLConnection conn) {
    InputStreamReader isr = null;
    BufferedReader br = null;
    StringBuffer sb = null;
    try {
    isr = new InputStreamReader(conngetInputStream()gb
    br = new BufferedReader(isr)
    String line = null;
    sb = new StringBuffer()
    while ((line = brreadLine()) != null) {
    sbappend(line)
    sbappend(\r\n
    }
    } catch (UnsupportedEncodingException e) {
    eprintStackTrace()
    } catch (IOException e) {
    eprintStackTrace()
    }finally{
    try {
    if(isr!=null)
    isrclose()
    } catch (IOException e) {
    Systemoutprintln(流關閉是異常
    eprintStackTrace()
    }
    }
    return sb;
    }
    /**
    * @return
    * @throws Exception
    * 獲取雲空間的信息
    */
    public CloudInfo getCloudInfo() throws Exception {
    URL u = new URL(?method=info&access_token=你申請的token的值;
    URLConnection conn = uopenConnection()// 打開網頁鏈接
    // 獲取用戶雲盤信息
    String cloudJson = thisgetJsonString(conn)toString()
    // 解析成對象 下面有這個實體對象的類
    Gson gson = new Gson()
    CloudInfo cloudInfo = gsonfromJson(cloudJson CloudInfoclass)
    Systemoutprintln(雲盤信息+cloudInfo)
    return cloudInfo;
    }
    [html] package comentity;
    import javalangreflectType;
    /**
    * @author ydcun 獲取雲空間的信息 例如
    * {quota: 空間配額單位為字節
    * used: 已使用空間大小 單位為字節
    * request_id:}
    */
    public class CloudInfo{
    private Double quota;
    private Double used;
    private Double request_id;
    /**
    * @return the quota 空間配額單位為字節
    */
    public Double getQuota() {
    return quota;
    }
    /**
    * @param quota the quota to set 空間配額單位為字節
    */
    public void setQuota(Double quota) {
    thisquota = quota;
    }
    /**
    * @return the used 已使用空間大小 單位為字節
    */
    public Double getused() {
    return used;
    }
    /**
    * @param used the used to set 已使用空間大小 單位為字節
    */
    public void setused(Double used) {
    thisused = used;
    }
    /**
    * @return the request_id
    */
    public Double getRequest_id() {
    return request_id;
    }
    /**
    * @param request_id the request_id to set
    */
    public void setRequest_id(Double request_id) {
    thisrequest_id = request_id;
    }
    @Override
    public String toString() {
    return new StringBuffer()append(空間容量append(thisgetQuota()//append(M; 已用append(thisgetused()//append(M; toString()
    }
    }
    package comentity;
    import javalangreflectType;
    /**
    * @author ydcun 獲取雲空間的信息 例如
    * {quota: 空間配額單位為字節
    * used: 已使用空間大小 單位為字節
    * request_id:}
    */
    public class CloudInfo{
    private Double quota;
    private Double used;
    private Double request_id;
    /**
    * @return the quota 空間配額單位為字節
    */
    public Double getQuota() {
    return quota;
    }
    /**
    * @param quota the quota to set 空間配額單位為字節
    */
    public void setQuota(Double quota) {
    thisquota = quota;
    }
    /**
    * @return the used 已使用空間大小 單位為字節
    */
    public Double getused() {
    return used;
    }
    /**
    * @param used the used to set 已使用空間大小 單位為字節
    */
    public void setused(Double used) {
    thisused = used;
    }
    /**
    * @return the request_id
    */
    public Double getRequest_id() {
    return request_id;
    }
    /**
    * @param request_id the request_id to set
    */
    public void setRequest_id(Double request_id) {
    thisrequest_id = request_id;
    }
    @Override
    public String toString() {
    return new StringBuffer()append(空間容量append(thisgetQuota()//append(M; 已用append(thisgetused()//append(M; toString()
    }
    }

  通過post方式提交 我用上傳單個文件為例子
    同樣我們也先了解下上傳文件要參數設置
    請求參數
    url: 標明我們要訪問的網址路徑 值固定問
    method:標明我們是請求雲盤信息 值固定為upload
    acceess_token:准入標識 值是我們自己申請的
    path:是我們要上傳到雲盤的那個路徑下 如/apps/myBaiduCloud/ myBaiduCloud是我們的應用名稱(當你獲取koten後就會自動生成以你應用名稱為名的文件夾)
    file:這個就是我們要上傳的文件了(要求用post方式上傳)
    ondup:可選參數標識當有重名的文件的時候處理方式具體見api
    接收返回參數
    返回的也是json串
    path:為我們上傳的文件保存的全路徑
    size:文件的大小有多少字節
    ctime/mtime:文件的創建修改時間
    其他參數介紹點小標題去api中查看
    {
    path : /apps/album/READMEmd
    size :
    ctime :
    mtime :
    md : cbafccef
    fs_id :
    request_id:
    }
    我在做的時候也是將其封裝到實體類中了這裡和上面一樣不詳述我們重點看下提交文件是怎麼提交的代碼如下
    [java] /**
    * @param path 雲盤存放路徑
    * @param name 要上傳的文件
    * @return
    * @throws Exception
    */
    public FileBase uploadFile(String pathFile file) throws Exception{
    //模擬文件
    String fileName=READMEmd;
    file = new File(fileName)
    path=%fapps%fmybaidu%f; // 我用的是url編碼過源碼為> /apps/mybaidu/
    /
    //將需要url傳值的參數和url組裝起來
    String u =+path+filegetName()+&method=upload&access_token=你自己申請的token值;
    PostMethod filePost = new PostMethod(u)
    //post提交的參數
    Part[] parts = {new FilePart(fileNamefile)};
    //設置多媒體參數作用類似form表單中的enctype=multipart/formdata
    filePostsetRequestEntity(new MultipartRequestEntity(parts filePostgetParams()))
    HttpClient clients = new HttpClient()
    //響應代碼
    int status = clientsexecuteMethod(filePost)
    Systemoutprintln(成功上傳+path+fileName)
    BufferedReader buReader = new BufferedReader(new InputStreamReader(filePostgetResponseBodyAsStream()utf))
    StringBuffer sb = new StringBuffer()
    String line;
    while((line=buReaderreadLine())!=null){
    sbappend(line)
    }
    buReaderclose()
    // 解析成對象
    Gson gson = new Gson()
    FileBase cloudInfo = gsonfromJson(sbtoString() FileBaseclass)
    return cloudInfo;
    }
    /**
    * @param path 雲盤存放路徑
    * @param name 要上傳的文件
    * @return
    * @throws Exception
    */
    public FileBase uploadFile(String pathFile file) throws Exception{
    //模擬文件
    String fileName=READMEmd;
    file = new File(fileName)
    path=%fapps%fmybaidu%f; // 我用的是url編碼過源碼為> /apps/mybaidu/
    /
    //將需要url傳值的參數和url組裝起來
    String u =+path+filegetName()+&method=upload&access_token=你自己申請的token值;
    PostMethod filePost = new PostMethod(u)
    //post提交的參數
    Part[] parts = {new FilePart(fileNamefile)};
    //設置多媒體參數作用類似form表單中的enctype=multipart/formdata
    filePostsetRequestEntity(new MultipartRequestEntity(parts filePostgetParams()))
    HttpClient clients = new HttpClient()
    //響應代碼
    int status = clientsexecuteMethod(filePost)
    Systemoutprintln(成功上傳+path+fileName)
    BufferedReader buReader = new BufferedReader(new InputStreamReader(filePostgetResponseBodyAsStream()utf))
    StringBuffer sb = new StringBuffer()
    String line;
    while((line=buReaderreadLine())!=null){
    sbappend(line)
    }
    buReaderclose()
    // 解析成對象
    Gson gson = new Gson()
    FileBase cloudInfo = gsonfromJson(sbtoString() FileBaseclass)
    return cloudInfo;
    }
    上面代碼成功後我們就會在/apps/mybaidu/目錄下找到READMEmd文件
    commonscodecjar
    commons
    commonsloggingjar
    gsonjar
    jsoupjar
    其他的api怎麼用百度給了一個很好的演示平台


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27162.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.