public function sign($body) { $contentType = 'application/octet-stream'; $headers = new Header(); $headers->put('Authorization', 'Odps 93475345628'); $headers->put('Content-Type', $contentType); $headers->put('Content-MD5', md5($body)); $headers->put('Date', gmdate('D, d M Y H:i:s T', time())); $headers->formatRaw(); // echo $headers->getRaw(); // $response = $request->request($parameters, $headers->getRaw()); // var_dump($request); // var_dump($response); // Signature = base64(HmacSha1(AccessKey, VERB + "\n" // + CONTENT-MD5 + "\n" // + CONTENT-TYPE + "\n" // + DATE + "\n" // + CanonicalizedODPSHeaders + "\n" // + CanonicalizedResource)) // // POST /projects/test_project/resources HTTP/1.1 // Authorization: ODPS 12CF3450006BF789F103:z7/QmEf7ZZYABY6S7GSrfSjltv8= // Content-MD5: e5828c564f71fea3a12dde8bd5d27063 // Content-Type: application/octet-stream // Date: Thu, 26 Nov 2015 08:56:57 GMT // Host: http://service-corp.odps.aliyun-inc.com/api // x-odps-resource-name: test.file // x-odps-resource-type: file $string = md5('body') + "\n"; $string .= $contentType + "\n"; $string .= gmdate('D, d M Y H:i:s T', time()) + "\n"; // $string .= $signature = base64_encode(hash_hmac("sha1", $this->accessKey, $string, true)); return "ODPS" . $this->accessId . $signature; }