一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Baidu云盤API接口的使用使用說(shuō)明

 戰(zhàn)神之家 2014-05-14

Baidu云盤API接口的使用使用說(shuō)明

www.educity.cn 發(fā)布者:mym_moon 來(lái)源:網(wǎng)友轉(zhuǎn)載  發(fā)布日期:2013年10月25日  文章評(píng)論  發(fā)表文章

  這幾天很有興致的學(xué)習(xí)了百度云盤文件API接口的使用;初步是想做一個(gè)在線android應(yīng)用,應(yīng)用中的文檔是存放在百度云盤的。
主要是分一下幾個(gè)步驟:
    1.注冊(cè)百度賬號(hào)
    2.登錄百度開(kāi)發(fā)者中心
    3.創(chuàng)建移動(dòng)應(yīng)用,獲取對(duì)應(yīng)的(API Key Secret Key)
    4.開(kāi)通pcs API權(quán)限
    5.獲取ACCESS_token(認(rèn)證編碼)
    6.開(kāi)發(fā)應(yīng)用
注意:
    開(kāi)通移動(dòng)應(yīng)用,獲取key
    獲取token的時(shí)候我使用的安卓獲取的方式
    通過(guò)我寫對(duì)應(yīng)api的例子我發(fā)現(xiàn),其實(shí)就兩種情況:一種是get方式提交數(shù)據(jù),另外一種是post方式提交數(shù)據(jù)
    1.get方式提交數(shù)據(jù),我們用獲取云盤的信息為例:
    獲取云盤信息前我們要知道,我們要準(zhǔn)備好什么數(shù)據(jù):
請(qǐng)求參數(shù):
    url: 標(biāo)明我們要訪問(wèn)的網(wǎng)址路徑 值固定問(wèn)""
    method:標(biāo)明我們是請(qǐng)求云盤信息 值固定為"info"
    acceess_token:準(zhǔn)入標(biāo)識(shí) 值是我們自己申請(qǐng)的
接收返回參數(shù):
    quota:云盤總?cè)萘?br>    used:云盤使用容量
    request_id:該請(qǐng)求的表示,沒(méi)啥用
    返回的一個(gè)json串如下格式:{"quota":123794882560, "used":83573494688,"request_id":2853739529}
    我在做的時(shí)候你使用Gson工具將json串轉(zhuǎn)換到對(duì)應(yīng)的entity類中了 代碼如下:
    [html] /**
    * @param URLConnection conn通過(guò)get方式獲取StringBuffer
    * @return
    */
    private StringBuffer getJsonString(URLConnection conn) {
    InputStreamReader isr = null;
    BufferedReader br = null;
    StringBuffer sb = null;
    try {
    isr = new InputStreamReader(conn.getInputStream(),"gb2312");
    br = new BufferedReader(isr);
    String line = null;
    sb = new StringBuffer();
    while ((line = br.readLine()) != null) {
    sb.append(line);
    sb.append("\r\n");
    }
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
    try {
    if(isr!=null)
    isr.close();
    } catch (IOException e) {
    System.out.println("流關(guān)閉是異常");
    e.printStackTrace();
    }
    }
    return sb;
    }
    /**
    * @return
    * @throws Exception
    * 獲取云空間的信息
    */
    public CloudInfo getCloudInfo() throws Exception {
    URL u = new URL("?method=info&access_token=你申請(qǐng)的token的值";
    URLConnection conn = u.openConnection();// 打開(kāi)網(wǎng)頁(yè)鏈接
    // 獲取用戶云盤信息
    String cloudJson = this.getJsonString(conn)。toString();

  // 解析成對(duì)象 下面有這個(gè)實(shí)體對(duì)象的類
    Gson gson = new Gson();
    CloudInfo cloudInfo = gson.fromJson(cloudJson, CloudInfo.class);
    System.out.println("云盤信息:"+cloudInfo);
    return cloudInfo;
    }
    /**
    * @param URLConnection conn通過(guò)get方式獲取StringBuffer
    * @return
    */
    private StringBuffer getJsonString(URLConnection conn) {
    InputStreamReader isr = null;
    BufferedReader br = null;
    StringBuffer sb = null;
    try {
    isr = new InputStreamReader(conn.getInputStream(),"gb2312");
    br = new BufferedReader(isr);
    String line = null;
    sb = new StringBuffer();
    while ((line = br.readLine()) != null) {
    sb.append(line);
    sb.append("\r\n");
    }
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
    try {
    if(isr!=null)
    isr.close();
    } catch (IOException e) {
    System.out.println("流關(guān)閉是異常");
    e.printStackTrace();
    }
    }
    return sb;
    }
    /**
    * @return
    * @throws Exception
    * 獲取云空間的信息
    */
    public CloudInfo getCloudInfo() throws Exception {
    URL u = new URL("?method=info&access_token=你申請(qǐng)的token的值";
    URLConnection conn = u.openConnection();// 打開(kāi)網(wǎng)頁(yè)鏈接
    // 獲取用戶云盤信息
    String cloudJson = this.getJsonString(conn)。toString();
    // 解析成對(duì)象 下面有這個(gè)實(shí)體對(duì)象的類
    Gson gson = new Gson();
    CloudInfo cloudInfo = gson.fromJson(cloudJson, CloudInfo.class);
    System.out.println("云盤信息:"+cloudInfo);
    return cloudInfo;
    }
    [html] package com.entity;
    import java.lang.reflect.Type;
    /**
    * @author ydcun 獲取云空間的信息 例如:
    * {"quota":123794882560, 空間配額,單位為字節(jié)
    * "used":83573494688, 已使用空間大小 單位為字節(jié)。
    * "request_id":2853739529}
    */
    public class CloudInfo{
    private Double quota;
    private Double used;
    private Double request_id;
    /**
    * @return the quota 空間配額,單位為字節(jié)
    */
    public Double getQuota() {
    return quota;
    }
    /**
    * @param quota the quota to set 空間配額,單位為字節(jié)
    */
    public void setQuota(Double quota) {
    this.quota = quota;
    }
    /**
    * @return the used 已使用空間大小 單位為字節(jié)
    */
    public Double getused() {
    return used;
    }
    /**
    * @param used the used to set 已使用空間大小 單位為字節(jié)
    */
    public void setused(Double used) {
    this.used = 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) {
    this.request_id = request_id;
    }
    @Override
    public String toString() {
    return new StringBuffer()。append("空間容量:")。append(this.getQuota()/1024/1024)。append("M; 已用:")。append(this.getused()/1024/1024)。append("M; ")。toString();
    }
    }
    package com.entity;
    import java.lang.reflect.Type;
    /**
    * @author ydcun 獲取云空間的信息 例如:
    * {"quota":123794882560, 空間配額,單位為字節(jié)
    * "used":83573494688, 已使用空間大小 單位為字節(jié)。
    * "request_id":2853739529}
    */
    public class CloudInfo{
    private Double quota;
    private Double used;
    private Double request_id;
    /**
    * @return the quota 空間配額,單位為字節(jié)
    */
    public Double getQuota() {
    return quota;
    }
    /**
    * @param quota the quota to set 空間配額,單位為字節(jié)
    */
    public void setQuota(Double quota) {
    this.quota = quota;
    }
    /**
    * @return the used 已使用空間大小 單位為字節(jié)
    */
    public Double getused() {
    return used;
    }
    /**
    * @param used the used to set 已使用空間大小 單位為字節(jié)
    */
    public void setused(Double used) {
    this.used = 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) {
    this.request_id = request_id;
    }
    @Override
    public String toString() {
    return new StringBuffer()。append("空間容量:")。append(this.getQuota()/1024/1024)。append("M; 已用:")。append(this.getused()/1024/1024)。append("M; ")。toString();
    }
    }

  2.通過(guò)post方式提交 我用上傳單個(gè)文件為例子:
    同樣我們也先了解下上傳文件要參數(shù)設(shè)置:
    請(qǐng)求參數(shù):
    url: 標(biāo)明我們要訪問(wèn)的網(wǎng)址路徑 值固定問(wèn)""
    method:標(biāo)明我們是請(qǐng)求云盤信息 值固定為"upload"
    acceess_token:準(zhǔn)入標(biāo)識(shí) 值是我們自己申請(qǐng)的
    path:是我們要上傳到云盤的那個(gè)路徑下 如/apps/myBaiduCloud/ myBaiduCloud是我們的應(yīng)用名稱(當(dāng)你獲取koten后就會(huì)自動(dòng)生成以你應(yīng)用名稱為名的文件夾)
    file:這個(gè)就是我們要上傳的文件了(要求用post方式上傳)
    ondup:可選參數(shù),標(biāo)識(shí)當(dāng)有重名的文件的時(shí)候處理方式具體見(jiàn)api
    接收返回參數(shù):
    返回的也是json串,
    path:為我們上傳的文件保存的全路徑
    size:文件的大小有多少字節(jié)
    ctime/mtime:文件的創(chuàng)建修改時(shí)間
    其他參數(shù)介紹點(diǎn)小標(biāo)題去api中查看
    {
    "path" : "/apps/album/README.md"
    "size" : 372121,
    "ctime" : 1234567890,
    "mtime" : 1234567890,
    "md5" : "cb123afcc12453543ef",
    "fs_id" : 12345,
    "request_id":4043312669
    }
    我在做的時(shí)候也是將其封裝到實(shí)體類中了,這里和上面一樣不詳述,我們重點(diǎn)看下提交文件是怎么提交的代碼如下:
    [java] /**
    * @param path 云盤存放路徑
    * @param name 要上傳的文件
    * @return
    * @throws Exception
    */
    public FileBase uploadFile(String path,File file) throws Exception{
    //模擬文件
    String fileName="README.md";
    file = new File(fileName);
    path="%2fapps%2fmybaidu%2f"; // 我用的是url編碼過(guò)源碼為:-> "/apps/mybaidu/
    /"
    //將需要url傳值的參數(shù)和url組裝起來(lái)
    String u =""+path+file.getName()+"&method=upload&access_token=你自己申請(qǐng)的token值";
    PostMethod filePost = new PostMethod(u);
    //post提交的參數(shù)
    Part[] parts = {new FilePart(fileName,file)};
    //設(shè)置多媒體參數(shù),作用類似form表單中的enctype="multipart/form-data"
    filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
    HttpClient clients = new HttpClient();
    //響應(yīng)代碼
    int status = clients.executeMethod(filePost);
    System.out.println("成功上傳"+path+fileName);
    BufferedReader buReader = new BufferedReader(new InputStreamReader(filePost.getResponseBodyAsStream(),"utf-8"));
    StringBuffer sb = new StringBuffer();
    String line;
    while((line=buReader.readLine())!=null){
    sb.append(line);
    }
    buReader.close();
    // 解析成對(duì)象
    Gson gson = new Gson();
    FileBase cloudInfo = gson.fromJson(sb.toString(), FileBase.class);
    return cloudInfo;
    }
    /**
    * @param path 云盤存放路徑
    * @param name 要上傳的文件
    * @return
    * @throws Exception
    */
    public FileBase uploadFile(String path,File file) throws Exception{
    //模擬文件
    String fileName="README.md";
    file = new File(fileName);
    path="%2fapps%2fmybaidu%2f"; // 我用的是url編碼過(guò)源碼為:-> "/apps/mybaidu/
    /"
    //將需要url傳值的參數(shù)和url組裝起來(lái)
    String u =""+path+file.getName()+"&method=upload&access_token=你自己申請(qǐng)的token值";
    PostMethod filePost = new PostMethod(u);
    //post提交的參數(shù)
    Part[] parts = {new FilePart(fileName,file)};
    //設(shè)置多媒體參數(shù),作用類似form表單中的enctype="multipart/form-data"
    filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
    HttpClient clients = new HttpClient();
    //響應(yīng)代碼
    int status = clients.executeMethod(filePost);
    System.out.println("成功上傳"+path+fileName);
    BufferedReader buReader = new BufferedReader(new InputStreamReader(filePost.getResponseBodyAsStream(),"utf-8"));
    StringBuffer sb = new StringBuffer();
    String line;
    while((line=buReader.readLine())!=null){
    sb.append(line);
    }
    buReader.close();
    // 解析成對(duì)象
    Gson gson = new Gson();
    FileBase cloudInfo = gson.fromJson(sb.toString(), FileBase.class);
    return cloudInfo;
    }
    上面代碼成功后我們就會(huì)在/apps/mybaidu/目錄下找到README.md文件
    commons-codec-1.3.jar
    commons-
    commons-logging.jar
    gson-2.2.1.jar
    jsoup-1.6.3.jar
    其他的api怎么用百度給了一個(gè)很好的演示平臺(tái):

標(biāo)簽: API接口

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    中文字幕区自拍偷拍区| 欧洲一级片一区二区三区| 国产精品内射视频免费| 老司机精品视频在线免费看| 毛片在线观看免费日韩| 中文字幕一区二区熟女| 日韩欧美中文字幕av| 日韩一区二区三区在线日| 日韩欧美一区二区黄色 | 丰满人妻少妇精品一区二区三区| 亚洲天堂一区在线播放| 日本和亚洲的香蕉视频| 国产av一区二区三区麻豆| 国产av大片一区二区三区| 欧美成人精品国产成人综合| 在线观看免费视频你懂的| 中文字日产幕码三区国产| 精品丝袜一区二区三区性色| 四季av一区二区播放| 日本一区不卡在线观看| 欧美日韩综合在线第一页| 高清欧美大片免费在线观看| 手机在线观看亚洲中文字幕| 一区二区三区人妻在线| 中文字幕日韩欧美一区| 91插插插外国一区二区| 高清一区二区三区大伊香蕉| 国产在线一区中文字幕| 午夜精品福利视频观看| 亚洲国产性生活高潮免费视频 | 少妇丰满a一区二区三区| 大香蕉大香蕉手机在线视频| 在线观看免费午夜福利| 午夜视频免费观看成人| 欧美日韩免费观看视频| 日本一品道在线免费观看| 日韩精品毛片视频免费看| 人妻人妻人人妻人人澡| 精品少妇人妻一区二区三区| 国产精品福利一二三区| 色欧美一区二区三区在线|