`

baidu云存储java sdk源码阅读之请求发送

阅读更多

      这个系列的文章中断了很长时间,今天继续写。我们首先来看BaiduBCS的入口类

public class BaiduBCS
{
  private static final Log log = LogFactory.getLog(BaiduBCS.class);
  private BCSHttpClient bcsHttpClient = null;
  private BCSCredentials credentials = null;
  private String endpoint = null;

  public BaiduBCS(BCSCredentials paramBCSCredentials, String paramString)
  {
    this.credentials = paramBCSCredentials;
    setEndpoint(paramString);
    this.bcsHttpClient = new BCSHttpClient(new ClientConfiguration());
  }

  public BaiduBCS(BCSCredentials paramBCSCredentials, String paramString, ClientConfiguration paramClientConfiguration)
  {
    this.credentials = paramBCSCredentials;
    setEndpoint(paramString);
    this.bcsHttpClient = new BCSHttpClient(paramClientConfiguration);
  }

   从构造函数来看bcsCredential是必须得,后一个就是endpoint,其实就是host,最后是客户端配置,默认是ClientConfiguration,从这个里面可以看到可以传递一个ClientConfirguration对象。

    我们接下来再看一下一个具体的动作,以copy文件为例:

  public BaiduBCSResponse<Empty> copyObject(CopyObjectRequest paramCopyObjectRequest)
    throws BCSClientException, BCSServiceException
  {
    assertParameterNotNull(paramCopyObjectRequest, "The request parameter can be null.");
    assertParameterNotNull(paramCopyObjectRequest.getHttpMethod(), "The http method parameter in Request must be specified.");
    assertParameterNotNull(paramCopyObjectRequest.getSource().getBucket(), "The bucket parameter of source must be specified when copy an object.");

    assertParameterNotNull(paramCopyObjectRequest.getSource().getObject(), "The object parameter of source must be specified when copy an object.");

    assertParameterNotNull(paramCopyObjectRequest.getDest().getBucket(), "The bucket parameter of dest must be specified when copy an object.");
    assertParameterNotNull(paramCopyObjectRequest.getDest().getObject(), "The object parameter of dest must be specified when copy an object.");
    log.debug("copy object, src[Bucket:" + paramCopyObjectRequest.getSource().getBucket() + "][Object:" + paramCopyObjectRequest.getSource().getObject() + "] to dest[Bucket" + paramCopyObjectRequest.getDest().getBucket() + "][Object" + paramCopyObjectRequest.getDest().getObject() + "]");

    BCSHttpRequest localBCSHttpRequest = createHttpRequest(paramCopyObjectRequest);

    localBCSHttpRequest.addHeader("x-bs-copy-source", "bs://" + paramCopyObjectRequest.getSource().getBucket() + paramCopyObjectRequest.getSource().getObject());

    if (null != paramCopyObjectRequest.getSourceEtag()) {
      localBCSHttpRequest.addHeader("x-bs-copy-source-tag", paramCopyObjectRequest.getSourceEtag());
    }

    if (null != paramCopyObjectRequest.getSourceDirective()) {
      localBCSHttpRequest.addHeader("x-bs-copy-source-directive", paramCopyObjectRequest.getSourceDirective());
    }

    populateRequestMetadata(localBCSHttpRequest, paramCopyObjectRequest.getDestMetadata());

    return this.bcsHttpClient.execute(localBCSHttpRequest, new VoidResponseHandler());
  }

     从代码的整体结构来看,是通过一个request对象,创建一个httpRequest对象,然后通过bcsHttpClient的execute方法执行,一个参数是HttpRequest,一个是ResponseHandler,从这个地方来看,只需要构造响应的request和响应的responseHandler就好。

分享到:
评论

相关推荐

    baidu云存储java sdk源码阅读之安全

    【标题】:“baidu云存储java sdk源码阅读之安全” 在阅读Baidu云存储Java SDK的源码时,我们关注的重点是其如何确保数据的安全性。Baidu云存储(Baidu BOS)提供了一种高效、可靠的云存储服务,而它的Java SDK则...

    云存储java sdk源代码.zip

    本话题主要围绕“云存储Java SDK源代码”展开,我们将探讨云存储的基本概念、Java SDK的作用、如何使用Java SDK进行云存储开发,以及如何理解和分析提供的源代码。 首先,云存储是指将数据存储在远程服务器上,用户...

    bce-java-sdk

    同时,由于SDK是开源的,开发者还可以查看源代码,学习最佳实践,并根据需要进行定制。 总之,“bce-java-sdk”是一个强大的工具,它为Java开发者提供了与百度云服务无缝对接的能力。通过使用SDK中的demo和公共包,...

    微信支付接口java sdk

    `src`目录存放着源代码,`docs`可能包含了SDK的使用文档或API参考,帮助开发者更好地理解和使用SDK。 `README.md`文件通常包含项目的简介、安装指南、使用示例和注意事项,是快速上手的重要参考资料。`....

    云计算 02.Java SDK for FusionCompute

    描述:R5版本FusionCompute JAVA API接口,提供随需使用的虚拟化计算能力,以及为支撑计算能力而必须配套的存储及网络能力。 1.文档放在doc中,包含开发指南和接口参考。 2.程序放在software中,提供形态为Java ...

    微信APIV3 JAVA SDK集成(JSAPI支付、商家转账到零钱、订单退款、多商户配置)超简单、新鲜,附源码

    此API V3版本针对JAVA环境提供了SDK,使得JAVA开发者能够轻松地集成微信的各种功能,包括但不限于JSAPI支付、商家转账到零钱、订单退款以及多商户配置等。这篇文章将详细介绍这些功能的集成过程,并提供源码示例。 ...

    ucloud接口java-sdk开发

    `ucloud-java-sdk-master`这个压缩包文件包含了UCloud Java SDK的源码,开发者可以下载并导入到自己的项目中。通过引入SDK,你可以直接调用预定义的类和方法来执行各种操作,如创建、删除、查询云服务器(UHost)、...

    腾讯微博开放平台Java开发SDK

    在实际开发中,`src`目录包含了SDK的源代码,开发者可以查看并学习其内部实现逻辑;`WebContent`目录可能包含示例Web应用的资源文件,如HTML、CSS和JavaScript,展示了如何在Web环境下集成SDK;`dist`目录通常存放的...

    baidu_bcs_sdk_java-master.zip_BCE_BCS

    通过"baidu_bcs_sdk_java-master"这个压缩包,开发者可以获得完整的Java SDK源代码,进一步了解其内部实现,也可以直接在项目中引用,快速构建与BCS服务交互的功能。使用这个SDK,开发者可以创建自己的应用程序,...

    淘宝SDK源代码,仅供初学者学习用

    通过学习淘宝SDK的源代码,初学者可以深入了解网络通信、API设计、数据处理、异常管理等多个方面的知识,为将来进行更复杂的电商应用开发打下坚实的基础。同时,这也是一次实践编程规范和最佳实践的好机会。

    大华SDK+java+4G网络摄像头

    这一步骤涉及到跨平台的编程技巧,确保Java代码能够正确地与底层硬件交互。 对于"手机触发相机进行录像"这个需求,我们需要在手机端编写一个控制程序,可能通过HTTP请求或者自定义的API向服务器发送指令。服务器端...

    aws-java-sdk-core-1.11.46.zip

    这个SDK是亚马逊Web服务(AWS)提供的用于Java开发人员的工具集,允许他们轻松地与AWS的各种服务进行交互,包括存储、计算、数据库、分析等。 【描述】"scalatestplus-play.zip, scalatestplus播放scalatest+play" ...

    taobao-sdk-java

    `taobao-sdk-java-20110512-source.jar` 文件则包含的是SDK的源代码,这对于开发者来说是极有价值的资源。通过查看源代码,开发者可以更深入地理解API的工作原理,进行调试,甚至自定义或扩展SDK的功能。这对于解决...

    Openstack-java-sdk-master

    "Openstack-java-sdk-master"很可能是这个项目的主分支,包含了完整的源代码和必要的资源文件,使得开发者能够更容易地在Java环境中集成和使用OpenStack的服务。 OpenStack的Java SDK提供了一系列的类和方法,用于...

    appengine-java-sdk

    Google Web Toolkit (GWT) 是一个开放源代码的Java框架,用于创建和优化复杂的Web应用程序。GWT允许开发者使用Java编写前端代码,然后通过编译器将其转换成优化过的JavaScript,可以在所有现代浏览器中运行。描述中...

    Java调用百度翻译接口

    本案例聚焦于使用Java语言调用百度翻译API来实现文本的翻译功能。百度翻译API提供了一种高效且便捷的方式来处理多语言之间的转换,特别适用于开发具有国际化需求的应用。 首先,我们需要了解百度翻译API的基本概念...

    金山快盘 Java SDK

    通过阅读和学习这些源代码,开发者可以更好地理解如何使用金山快盘的API,如何处理各种请求和响应,以及如何优化性能。 在使用金山快盘 Java SDK时,开发者首先需要注册并获取API密钥,这是为了确保只有授权的应用...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java源码 仿360buy京东商城源码 京东JavaWeb项目源代码.zip

    该压缩包文件“java源码 仿360buy京东商城源码 京东JavaWeb项目源代码.zip”包含了实现一个类似360buy京东商城功能的完整JavaWeb项目源代码。这个项目对于学习和理解Java在电子商务平台开发中的应用具有很高的参考...

    芝麻信用sdk-JAVA

    2. **zmxy-sdk-java-20170907142322-source.jar**:这个文件包含SDK的源代码,对于开发者来说,查看源码有助于更好地理解和使用SDK,同时也方便进行二次开发和定制。 3. **commons-logging-1.1.1-sources.jar** 和 *...

Global site tag (gtag.js) - Google Analytics