打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Baidu云盘API接口的使用使用说明

Baidu云盘API接口的使用使用说明

www.educity.cn 发布者:mym_moon 来源:网友转载  发布日期:2013年10月25日  文章评论  发表文章

  这几天很有兴致的学习了百度云盘文件API接口的使用;初步是想做一个在线android应用,应用中的文档是存放在百度云盘的。
主要是分一下几个步骤:
    1.注册百度账号
    2.登录百度开发者中心
    3.创建移动应用,获取对应的(API Key Secret Key)
    4.开通pcs API权限
    5.获取ACCESS_token(认证编码)
    6.开发应用
注意:
    开通移动应用,获取key
    获取token的时候我使用的安卓获取的方式
    通过我写对应api的例子我发现,其实就两种情况:一种是get方式提交数据,另外一种是post方式提交数据
    1.get方式提交数据,我们用获取云盘的信息为例:
    获取云盘信息前我们要知道,我们要准备好什么数据:
请求参数:
    url: 标明我们要访问的网址路径 值固定问""
    method:标明我们是请求云盘信息 值固定为"info"
    acceess_token:准入标识 值是我们自己申请的
接收返回参数:
    quota:云盘总容量
    used:云盘使用容量
    request_id:该请求的表示,没啥用
    返回的一个json串如下格式:{"quota":123794882560, "used":83573494688,"request_id":2853739529}
    我在做的时候你使用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(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("流关闭是异常");
    e.printStackTrace();
    }
    }
    return sb;
    }
    /**
    * @return
    * @throws Exception
    * 获取云空间的信息
    */
    public CloudInfo getCloudInfo() throws Exception {
    URL u = new URL("?method=info&access_token=你申请的token的值";
    URLConnection conn = u.openConnection();// 打开网页链接
    // 获取用户云盘信息
    String cloudJson = this.getJsonString(conn)。toString();

  // 解析成对象 下面有这个实体对象的类
    Gson gson = new Gson();
    CloudInfo cloudInfo = gson.fromJson(cloudJson, CloudInfo.class);
    System.out.println("云盘信息:"+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(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("流关闭是异常");
    e.printStackTrace();
    }
    }
    return sb;
    }
    /**
    * @return
    * @throws Exception
    * 获取云空间的信息
    */
    public CloudInfo getCloudInfo() throws Exception {
    URL u = new URL("?method=info&access_token=你申请的token的值";
    URLConnection conn = u.openConnection();// 打开网页链接
    // 获取用户云盘信息
    String cloudJson = this.getJsonString(conn)。toString();
    // 解析成对象 下面有这个实体对象的类
    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, 空间配额,单位为字节
    * "used":83573494688, 已使用空间大小 单位为字节。
    * "request_id":2853739529}
    */
    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) {
    this.quota = quota;
    }
    /**
    * @return the used 已使用空间大小 单位为字节
    */
    public Double getused() {
    return used;
    }
    /**
    * @param used the used to set 已使用空间大小 单位为字节
    */
    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, 空间配额,单位为字节
    * "used":83573494688, 已使用空间大小 单位为字节。
    * "request_id":2853739529}
    */
    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) {
    this.quota = quota;
    }
    /**
    * @return the used 已使用空间大小 单位为字节
    */
    public Double getused() {
    return used;
    }
    /**
    * @param used the used to set 已使用空间大小 单位为字节
    */
    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.通过post方式提交 我用上传单个文件为例子:
    同样我们也先了解下上传文件要参数设置:
    请求参数:
    url: 标明我们要访问的网址路径 值固定问""
    method:标明我们是请求云盘信息 值固定为"upload"
    acceess_token:准入标识 值是我们自己申请的
    path:是我们要上传到云盘的那个路径下 如/apps/myBaiduCloud/ myBaiduCloud是我们的应用名称(当你获取koten后就会自动生成以你应用名称为名的文件夹)
    file:这个就是我们要上传的文件了(要求用post方式上传)
    ondup:可选参数,标识当有重名的文件的时候处理方式具体见api
    接收返回参数:
    返回的也是json串,
    path:为我们上传的文件保存的全路径
    size:文件的大小有多少字节
    ctime/mtime:文件的创建修改时间
    其他参数介绍点小标题去api中查看
    {
    "path" : "/apps/album/README.md"
    "size" : 372121,
    "ctime" : 1234567890,
    "mtime" : 1234567890,
    "md5" : "cb123afcc12453543ef",
    "fs_id" : 12345,
    "request_id":4043312669
    }
    我在做的时候也是将其封装到实体类中了,这里和上面一样不详述,我们重点看下提交文件是怎么提交的代码如下:
    [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编码过源码为:-> "/apps/mybaidu/
    /"
    //将需要url传值的参数和url组装起来
    String u =""+path+file.getName()+"&method=upload&access_token=你自己申请的token值";
    PostMethod filePost = new PostMethod(u);
    //post提交的参数
    Part[] parts = {new FilePart(fileName,file)};
    //设置多媒体参数,作用类似form表单中的enctype="multipart/form-data"
    filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
    HttpClient clients = new HttpClient();
    //响应代码
    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();
    // 解析成对象
    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编码过源码为:-> "/apps/mybaidu/
    /"
    //将需要url传值的参数和url组装起来
    String u =""+path+file.getName()+"&method=upload&access_token=你自己申请的token值";
    PostMethod filePost = new PostMethod(u);
    //post提交的参数
    Part[] parts = {new FilePart(fileName,file)};
    //设置多媒体参数,作用类似form表单中的enctype="multipart/form-data"
    filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
    HttpClient clients = new HttpClient();
    //响应代码
    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();
    // 解析成对象
    Gson gson = new Gson();
    FileBase cloudInfo = gson.fromJson(sb.toString(), FileBase.class);
    return cloudInfo;
    }
    上面代码成功后我们就会在/apps/mybaidu/目录下找到README.md文件
    commons-codec-1.3.jar
    commons-
    commons-logging.jar
    gson-2.2.1.jar
    jsoup-1.6.3.jar
    其他的api怎么用百度给了一个很好的演示平台:

标签: API接口
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JAVA版微信支付V3-完全版
易宝Java版在线支付
java反射
Java关于JSON数据格式转换
JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法
UC 优视科技字符串算法面试题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服