code: public FetchObjectResponse fetchObject(FetchObjectRequest request) {
          checkNotNull(request, "request should not be null.");
          assertStringNotNullOrEmpty(request.getSourceUrl(), "source should not be null or empty");
  
          InternalRequest internalRequest = this.createRequest(request, HttpMethodName.POST);
          internalRequest.addParameter("fetch", null);
  
          internalRequest.addHeader(Headers.BCE_FETCH_SOURCE, request.getSourceUrl());
          if (request.getMode() != null) {
              internalRequest.addHeader(Headers.BCE_FETCH_MODE, request.getMode());
          }
          if (request.getStorageClass() != null) {
              internalRequest.addHeader(Headers.BCE_STORAGE_CLASS, request.getStorageClass());
          }
          this.setZeroContentLength(internalRequest);
  
          FetchObjectResponse response = this.invokeHttpClient(internalRequest, FetchObjectResponse.class);
          return response;
      }
docs: Fetches a source object to a new destination in Bos.
  
  @param request The request object containing all the options for fetching url to a Bos object.
  @return A FetchObjectResponse object containing the information returned by Bos for the newly fetching.