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; }
public function putProject() { $bodyArray = array('Name' => 'fengzbao_new_odps' . time(), 'Comment' => time() . 'comment'); $body = $this->createPutProjectXmlBody($bodyArray); $uri = '/project/fengzbaoodps'; $request = new Request($this->endPoint . $uri, 'PUT'); $request->setBody($body); $header = new Header(); $header->setUserAgent(); $header->put('Content-Type', Request::$contentTypeXml); if ($body) { $header->put('Content-MD5', md5($request->getBody())); } $header->put('Date', gmdate('D, d M Y H:i:s T', time())); $request->setHeader($header); $header->put('Authorization', $this->sign($request)); $header->formatRaw(); $request->setHeader($header); var_dump($request->header); return $request->request($header->getRaw()); }