docs: public String DoPut(Request request) throws Exception {
  
          Unirest.setHttpClient(getHttpClient());
  
          if (request.client == null) {
              throw new Exception("client must NOT null");
          }
  
          String buf = "";
          if (request.client.GetEnableCrypto()) {
              buf = request.crypto.signAndEncrypt(request.body.toString().getBytes());
          } else {
              buf = request.body.toString();
          }
  
          Map<String, String> mapHeader = Utils.JsonToMap(request.header);
          mapHeader.put(Headers.APIKeyHeader, request.client.GetApiKey());
  
          if (request.client.GetRouteTag() != "") {
              mapHeader.put(Headers.FabioRouteTagHeader, request.client.GetRouteTag());
              mapHeader.put(Headers.RouteTagHeader, request.client.GetRouteTag());
          }
  
          HttpResponse<String> res = Unirest.put(request.url).headers(mapHeader).body(buf).asString();
  
          String respData = res.getBody();
  
          System.out.println("Got remote cipher response: " + respData);
  
          String oriData = "";
          if (request.client.GetEnableCrypto()) {
              oriData = request.crypto.decryptAndVerify(respData.getBytes());
          } else {
              oriData = respData;
          }
          return oriData;
  
      }