def test_bug_with_17661113(self): request = CommonRequest() request.set_domain("nlp.cn-shanghai.aliyuncs.com") request.set_uri_pattern("/nlp/api/reviewanalysis/ecommerce") request.set_method(method_type.POST) request.add_header("x-acs-signature-method", "HMAC-SHA1") request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) request.add_header("x-acs-signature-version", "1.0") content = '{"text":"裙子穿着很美哦,上身效果也不错,是纯棉的料子,穿着也很舒服。", ' \ '"cate":"clothing"}' request.set_content_type("application/json;chrset=utf-8") request.set_accept_format("application/json;chrset=utf-8") if sys.version_info[0] == 2: request.set_content(content) else: request.set_content(content.encode('utf-8')) request.set_version('2018-04-08') request.set_action_name("None") # We have 2 possible situations here: NLP purchased or NLP purchased # The test case should be passed in both situations. try: response = self.client.do_action_with_exception(request) self.assertTrue(response) except ServerException as e: self.assertEqual("InvalidApi.NotPurchase", e.error_code) self.assertEqual("Specified api is not purchase", e.get_error_msg())
def test_roa_json(self): request = CommonRequest(domain='ft.aliyuncs.com', version='2016-01-02', action_name='TestRoaApi', uri_pattern='/web/cloudapi') request.set_method('POST') request.add_header('HeaderParam', 'headerValue') request.add_query_param('QueryParam', 'queryValue') dict_data = {'data': 1} request.set_content(json.dumps(dict_data)) request.set_content_type(format_type.APPLICATION_JSON) body = self.acs_client.do_action_with_exception(request) assert body response = json.loads(body) assert response assert response.get("Params").get("QueryParam") == 'queryValue' assert response.get("Headers").get("HeaderParam") == 'headerValue' assert response.get("Headers").get("Content-Type") == 'application/json' assert response.get("Body") == '{"data": 1}'
def test_common_request(self): r = CommonRequest() # accept format self.assertIsNone(r.get_accept_format()) r.set_accept_format('json') self.assertEqual(r.get_accept_format(), "json") # action name self.assertEqual(r.get_action_name(), None) r.set_action_name('new action name') self.assertEqual(r.get_action_name(), "new action name") # body params self.assertDictEqual(r.get_body_params(), {}) r.set_body_params({'key': 'value'}) self.assertDictEqual(r.get_body_params(), {'key': 'value'}) r.add_body_params("key2", "value2") self.assertDictEqual(r.get_body_params(), { 'key': 'value', 'key2': 'value2' }) # content self.assertIsNone(r.get_content()) r.set_content("content") self.assertEqual(r.get_content(), "content") # headers self.assertDictEqual(r.get_headers(), {'x-sdk-invoke-type': 'common'}) r.set_headers({}) self.assertDictEqual(r.get_headers(), {}) r.add_header("key", "value") self.assertDictEqual(r.get_headers(), {"key": "value"}) # location endpoint type self.assertEqual(r.get_location_endpoint_type(), 'openAPI') # no set_location_endpoint_type ?? # location_service_code self.assertEqual(r.get_location_service_code(), None) r.set_location_service_code('new service code') self.assertEqual(r.get_location_service_code(), 'new service code') # method self.assertEqual(r.get_method(), 'GET') r.set_method('POST') self.assertEqual(r.get_method(), 'POST') # product self.assertEqual(r.get_product(), None) r.set_product('new-product') self.assertEqual(r.get_product(), 'new-product') # protocol_type self.assertEqual(r.get_protocol_type(), "http") r.set_protocol_type('https') self.assertEqual(r.get_protocol_type(), "https") # query params self.assertDictEqual(r.get_query_params(), {}) r.set_query_params({'key': 'value'}) self.assertDictEqual(r.get_query_params(), {'key': 'value'}) r.add_query_param("key2", "value2") self.assertDictEqual(r.get_query_params(), { 'key': 'value', "key2": "value2" }) # uri params self.assertEqual(r.get_uri_params(), None) r.set_uri_params({'user': "******"}) self.assertDictEqual(r.get_uri_params(), {'user': '******'}) # uri pattern self.assertEqual(r.get_uri_pattern(), None) r.set_uri_pattern('/users/:userid') self.assertEqual(r.get_uri_pattern(), '/users/:userid') # url # version self.assertEqual(r.get_version(), None) r.set_version('2014-10-18') self.assertEqual(r.get_version(), "2014-10-18") # user-agent self.assertEqual(r.get_headers().get('User-Agent'), None) r.set_user_agent("user-agent") self.assertEqual(r.get_headers().get('User-Agent'), "user-agent") # content-type self.assertEqual(r.get_headers().get('Content-Type'), None) r.set_content_type("application/json") self.assertEqual(r.get_headers().get('Content-Type'), "application/json") # domain self.assertEqual(r.get_domain(), None) r.set_domain("new-domain") self.assertEqual(r.get_domain(), "new-domain") # path_params self.assertEqual(r.get_path_params(), None) r.add_path_param("userid", "jacksontian") r.add_path_param("repo", "snow") self.assertEqual(r.get_path_params(), { "userid": "jacksontian", "repo": "snow" }) r.set_path_params({"userid": "linatian"}) self.assertEqual(r.get_path_params(), {"userid": "linatian"})
# @Author : 李志伟 # @Email : [email protected] import uuid from urllib.parse import urlencode from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient('LTAI4FcqpUcSu5Ytbt9FTvPg', 'AX38rHYJgtWVwjAxyZjx0oIGXm11nW', 'cn-hangzhou') request = CommonRequest() request.set_domain("automl.cn-hangzhou.aliyuncs.com") request.set_uri_pattern("/api/automl/predict") request.set_version('2019-05-29') request.set_method('POST') request.add_header("x-acs-signature-method", "HMAC-SHA1") request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) request.add_header("x-acs-signature-version", "1.0") request.set_content_type("application/x-www-form-urlencoded") request.set_accept_format("application/json;chrset=utf-8") new_content = { 'ModelId': 1408, 'Content': 'Delegates Urge Cleric to Pull Out of Najaf', 'Version': 'V1' } request.set_content(urlencode(new_content)) response = client.do_action_with_exception(request) print(str(response, encoding='utf-8'))
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from aliyunsdkcore.http import method_type import json # 创建AcsClient实例 client = AcsClient('LTAIby5D2cxpu0zG', 'EGjFkYGV1o2Q2gRYwBM7DiryBSB96T', 'cn-shanghai') request = CommonRequest() request.set_domain("nlp.cn-shanghai.aliyuncs.com") # 必须设置domain request.set_method(method_type.POST) # 设置请求方式,目前只支持POST request.add_header("x-acs-signature-method", "HMAC-SHA1") # 设置签名方法 request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) # 设置请求唯一码,防止网络重放攻击, 每个请求必须不同 request.add_header("x-acs-signature-version", "1.0") # 设置签名版本 request.set_content_type("application/json;chrset=utf-8") # 设置请求格式 request.set_accept_format("application/json;chrset=utf-8") # 设置响应格式 request.set_version('2018-04-08') # 设置版本 request.set_action_name("None") def text_structure(text): content = json.dumps({ "tag_flag": "true", "text": text, }) request.set_uri_pattern("/nlp/api/textstructure/ecommerce") #设置所要请求的API路径 request.set_content(content.encode('utf-8')) # 设置请求内容 response = client.do_action_with_exception(request) return json.loads(response)