You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
285 lines
11 KiB
285 lines
11 KiB
5 years ago
|
<?php
|
||
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing,
|
||
|
* software distributed under the License is distributed on an
|
||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
* KIND, either express or implied. See the License for the
|
||
|
* specific language governing permissions and limitations
|
||
|
* under the License.
|
||
|
*/
|
||
|
include_once 'Util/Autoloader.php';
|
||
|
|
||
|
$demo = new Demo();
|
||
|
$demo->doPostString();
|
||
|
|
||
|
/**
|
||
|
*请求示例
|
||
|
*如一个完整的url为http://api.aaaa.com/createobject?key1=value&key2=value2
|
||
|
*$host为http://api.aaaa.com
|
||
|
*$path为/createobject
|
||
|
*query为key1=value&key2=value2
|
||
|
*/
|
||
|
class Demo
|
||
|
{
|
||
|
private static $appKey = "23481440";
|
||
|
private static $appSecret = "5749df13ff0c16bb9080b09d34a5a31a";
|
||
|
//协议(http或https)://域名:端口,注意必须有http://或https://
|
||
|
// private static $host = "http://test.alicloudapi.com";
|
||
|
private static $host = "https://dm-51.data.aliyun.com";
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
*method=GET请求示例
|
||
|
*/
|
||
|
public function doGet() {
|
||
|
//域名后、query前的部分
|
||
|
$path = "/get";
|
||
|
$request = new HttpRequest($this::$host, $path, HttpMethod::GET, $this::$appKey, $this::$appSecret);
|
||
|
|
||
|
//设定Content-Type,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE, ContentType::CONTENT_TYPE_TEXT);
|
||
|
|
||
|
//设定Accept,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT, ContentType::CONTENT_TYPE_TEXT);
|
||
|
//如果是调用测试环境请设置
|
||
|
//$request->setHeader(SystemHeader::X_CA_STAG, "TEST");
|
||
|
|
||
|
|
||
|
//注意:业务header部分,如果没有则无此行(如果有中文,请做Utf8ToIso88591处理)
|
||
|
//mb_convert_encoding("headervalue2中文", "ISO-8859-1", "UTF-8");
|
||
|
$request->setHeader("b-header2", "headervalue2");
|
||
|
$request->setHeader("a-header1", "headervalue1");
|
||
|
|
||
|
//注意:业务query部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setQuery("b-query2", "queryvalue2");
|
||
|
$request->setQuery("a-query1", "queryvalue1");
|
||
|
|
||
|
//指定参与签名的header
|
||
|
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
|
||
|
$request->setSignHeader("a-header1");
|
||
|
$request->setSignHeader("b-header2");
|
||
|
|
||
|
$response = HttpClient::execute($request);
|
||
|
print_r($response);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*method=POST且是表单提交,请求示例
|
||
|
*/
|
||
|
public function doPostForm() {
|
||
|
//域名后、query前的部分
|
||
|
$path = "/postform";
|
||
|
$request = new HttpRequest($this::$host, $path, HttpMethod::POST, $this::$appKey, $this::$appSecret);
|
||
|
|
||
|
//设定Content-Type,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE, ContentType::CONTENT_TYPE_FORM);
|
||
|
|
||
|
//设定Accept,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT, ContentType::CONTENT_TYPE_JSON);
|
||
|
//如果是调用测试环境请设置
|
||
|
//$request->setHeader(SystemHeader::X_CA_STAG, "TEST");
|
||
|
|
||
|
|
||
|
//注意:业务header部分,如果没有则无此行(如果有中文,请做Utf8ToIso88591处理)
|
||
|
//mb_convert_encoding("headervalue2中文", "ISO-8859-1", "UTF-8");
|
||
|
$request->setHeader("b-header2", "headervalue2");
|
||
|
$request->setHeader("a-header1", "headervalue1");
|
||
|
|
||
|
//注意:业务query部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setQuery("b-query2", "queryvalue2");
|
||
|
$request->setQuery("a-query1", "queryvalue1");
|
||
|
|
||
|
//注意:业务body部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setBody("b-body2", "bodyvalue2");
|
||
|
$request->setBody("a-body1", "bodyvalue1");
|
||
|
|
||
|
//指定参与签名的header
|
||
|
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
|
||
|
$request->setSignHeader("a-header1");
|
||
|
$request->setSignHeader("b-header2");
|
||
|
|
||
|
$response = HttpClient::execute($request);
|
||
|
print_r($response);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*method=POST且是非表单提交,请求示例
|
||
|
*/
|
||
|
public function doPostString() {
|
||
|
//域名后、query前的部分
|
||
|
// $path = "/poststring";
|
||
|
$path = '/rest/160601/ocr/ocr_idcard.json';
|
||
|
$request = new HttpRequest($this::$host, $path, HttpMethod::POST, $this::$appKey, $this::$appSecret);
|
||
|
//传入内容是json格式的字符串
|
||
|
// $bodyContent = "{\"inputs\": [{\"image\": {\"dataType\": 50,\"dataValue\": \"base64_image_string(此行)\"},\"configure\": {\"dataType\": 50,\"dataValue\": \"{\"side\":\"face(#此行此行)\"}\"}}]}";
|
||
|
$b_content = file_get_contents('b.jpg');
|
||
|
$b_base64 = base64_encode($b_content);
|
||
|
$bodyContent = '{"inputs":[{"image":{"dataType":50,"dataValue":"'.$b_base64.'"},"configure":{"dataType":50,"dataValue":"{ \"side\": \"back\" }"}}]}';
|
||
|
|
||
|
//设定Content-Type,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE, ContentType::CONTENT_TYPE_JSON);
|
||
|
|
||
|
//设定Accept,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT, ContentType::CONTENT_TYPE_JSON);
|
||
|
//如果是调用测试环境请设置
|
||
|
//$request->setHeader(SystemHeader::X_CA_STAG, "TEST");
|
||
|
|
||
|
|
||
|
//注意:业务header部分,如果没有则无此行(如果有中文,请做Utf8ToIso88591处理)
|
||
|
//mb_convert_encoding("headervalue2中文", "ISO-8859-1", "UTF-8");
|
||
|
$request->setHeader("b-header2", "headervalue2");
|
||
|
$request->setHeader("a-header1", "headervalue1");
|
||
|
|
||
|
//注意:业务query部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setQuery("b-query2", "queryvalue2");
|
||
|
$request->setQuery("a-query1", "queryvalue1");
|
||
|
|
||
|
//注意:业务body部分,不能设置key值,只能有value
|
||
|
if (0 < strlen($bodyContent)) {
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_MD5, base64_encode(md5($bodyContent, true)));
|
||
|
$request->setBodyString($bodyContent);
|
||
|
}
|
||
|
|
||
|
//指定参与签名的header
|
||
|
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
|
||
|
$request->setSignHeader("a-header1");
|
||
|
$request->setSignHeader("b-header2");
|
||
|
|
||
|
$response = HttpClient::execute($request);
|
||
|
print_r($response);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*method=POST且是非表单提交,请求示例
|
||
|
*/
|
||
|
public function doPostStream() {
|
||
|
//域名后、query前的部分
|
||
|
$path = "/poststream";
|
||
|
$request = new HttpRequest($this::$host, $path, HttpMethod::POST, $this::$appKey, $this::$appSecret);
|
||
|
//Stream的内容
|
||
|
$bytes = array();
|
||
|
//传入内容是json格式的字符串
|
||
|
$bodyContent = "{\"inputs\": [{\"image\": {\"dataType\": 50,\"dataValue\": \"base64_image_string(此行)\"},\"configure\": {\"dataType\": 50,\"dataValue\": \"{\"side\":\"face(#此行此行)\"}\"}}]}";
|
||
|
|
||
|
//设定Content-Type,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE, ContentType::CONTENT_TYPE_STREAM);
|
||
|
|
||
|
//设定Accept,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT, ContentType::CONTENT_TYPE_JSON);
|
||
|
//如果是调用测试环境请设置
|
||
|
//$request->setHeader(SystemHeader::X_CA_STAG, "TEST");
|
||
|
|
||
|
|
||
|
//注意:业务header部分,如果没有则无此行(如果有中文,请做Utf8ToIso88591处理)
|
||
|
//mb_convert_encoding("headervalue2中文", "ISO-8859-1", "UTF-8");
|
||
|
$request->setHeader("b-header2", "headervalue2");
|
||
|
$request->setHeader("a-header1", "headervalue1");
|
||
|
|
||
|
//注意:业务query部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setQuery("b-query2", "queryvalue2");
|
||
|
$request->setQuery("a-query1", "queryvalue1");
|
||
|
|
||
|
//注意:业务body部分,不能设置key值,只能有value
|
||
|
foreach($bytes as $byte) {
|
||
|
$bodyContent .= chr($byte);
|
||
|
}
|
||
|
if (0 < strlen($bodyContent)) {
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_MD5, base64_encode(md5($bodyContent, true)));
|
||
|
$request->setBodyStream($bodyContent);
|
||
|
}
|
||
|
|
||
|
//指定参与签名的header
|
||
|
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
|
||
|
$request->setSignHeader("a-header1");
|
||
|
$request->setSignHeader("b-header2");
|
||
|
|
||
|
$response = HttpClient::execute($request);
|
||
|
print_r($response);
|
||
|
}
|
||
|
|
||
|
//method=PUT方式和method=POST基本类似,这里不再举例
|
||
|
|
||
|
/**
|
||
|
*method=DELETE请求示例
|
||
|
*/
|
||
|
public function doDelete() {
|
||
|
//域名后、query前的部分
|
||
|
$path = "/delete";
|
||
|
$request = new HttpRequest($this::$host, $path, HttpMethod::DELETE, $this::$appKey, $this::$appSecret);
|
||
|
|
||
|
//设定Content-Type,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE, ContentType::CONTENT_TYPE_TEXT);
|
||
|
|
||
|
//设定Accept,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT, ContentType::CONTENT_TYPE_TEXT);
|
||
|
//如果是调用测试环境请设置
|
||
|
//$request->setHeader(SystemHeader::X_CA_STAG, "TEST");
|
||
|
|
||
|
|
||
|
//注意:业务header部分,如果没有则无此行(如果有中文,请做Utf8ToIso88591处理)
|
||
|
//mb_convert_encoding("headervalue2中文", "ISO-8859-1", "UTF-8");
|
||
|
$request->setHeader("b-header2", "headervalue2");
|
||
|
$request->setHeader("a-header1", "headervalue1");
|
||
|
|
||
|
//注意:业务query部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setQuery("b-query2", "queryvalue2");
|
||
|
$request->setQuery("a-query1", "queryvalue1");
|
||
|
|
||
|
//指定参与签名的header
|
||
|
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
|
||
|
$request->setSignHeader("a-header1");
|
||
|
$request->setSignHeader("b-header2");
|
||
|
|
||
|
$response = HttpClient::execute($request);
|
||
|
print_r($response);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*method=HEAD请求示例
|
||
|
*/
|
||
|
public function doHead() {
|
||
|
//域名后、query前的部分
|
||
|
$path = "/head";
|
||
|
$request = new HttpRequest($this::$host, $path, HttpMethod::HEAD, $this::$appKey, $this::$appSecret);
|
||
|
|
||
|
//设定Content-Type,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE, ContentType::CONTENT_TYPE_TEXT);
|
||
|
|
||
|
//设定Accept,根据服务器端接受的值来设置
|
||
|
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT, ContentType::CONTENT_TYPE_TEXT);
|
||
|
//如果是调用测试环境请设置
|
||
|
//$request->setHeader(SystemHeader::X_CA_STAG, "TEST");
|
||
|
|
||
|
|
||
|
//注意:业务header部分,如果没有则无此行(如果有中文,请做Utf8ToIso88591处理)
|
||
|
//mb_convert_encoding("headervalue2中文", "ISO-8859-1", "UTF-8");
|
||
|
$request->setHeader("b-header2", "headervalue2");
|
||
|
$request->setHeader("a-header1", "headervalue1");
|
||
|
|
||
|
//注意:业务query部分,如果没有则无此行;请不要、不要、不要做UrlEncode处理
|
||
|
$request->setQuery("b-query2", "queryvalue2");
|
||
|
$request->setQuery("a-query1", "queryvalue1");
|
||
|
|
||
|
//指定参与签名的header
|
||
|
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
|
||
|
$request->setSignHeader("a-header1");
|
||
|
$request->setSignHeader("b-header2");
|
||
|
|
||
|
$response = HttpClient::execute($request);
|
||
|
print_r($response);
|
||
|
}
|
||
|
}
|