public void ResolveProxy() { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE); var httpRequest = new HttpRequest("urls", new Dictionary <string, string>()); var acsRequest = new AssumeRoleRequest(); var type = typeof(DefaultAcsClient); var resolveProxy = Activator.CreateInstance(type, profile); var methodInfo = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance) .Where(x => x.Name == "ResolveProxy" && x.IsPrivate) .First(); var genericMethod = methodInfo.MakeGenericMethod(typeof(AssumeRoleResponse)); object[] parameters = { httpRequest, acsRequest }; genericMethod.Invoke(resolveProxy, parameters); acsRequest.Protocol = ProtocolType.HTTP; Environment.SetEnvironmentVariable("HTTP_PROXY", "http://*****:*****@192.168.16.1:10"); Environment.SetEnvironmentVariable("no_proxy", "localhost,127.0.0.1,localaddress,.localdomain.com"); genericMethod.Invoke(resolveProxy, parameters); Assert.True(httpRequest.Headers.ContainsKey("Authorization")); Environment.SetEnvironmentVariable("HTTP_PROXY", null); acsRequest.Protocol = ProtocolType.HTTPS; Environment.SetEnvironmentVariable("HTTPS_PROXY", "https://*****:*****@192.168.16.1:10"); genericMethod.Invoke(resolveProxy, parameters); Assert.True(httpRequest.Headers.ContainsKey("Authorization")); Environment.SetEnvironmentVariable("HTTPS_PROXY", null); httpRequest.Headers.Remove("Authorization"); Environment.SetEnvironmentVariable("HTTPS_PROXY", "https://192.168.16.1:10"); genericMethod.Invoke(resolveProxy, parameters); Assert.False(httpRequest.Headers.ContainsKey("Authorization")); Environment.SetEnvironmentVariable("HTTPS_PROXY", null); Environment.SetEnvironmentVariable("HTTP_PROXY", null); Environment.SetEnvironmentVariable("no_proxy", null); httpRequest.Headers.Remove("Authorization"); }
public void UnicodeAndQueryTest() { BasicSessionCredentials basciCredential = new BasicSessionCredentials(this.GetBasicAccessKeyId(), this.GetBasicAccessKeySecret(), this.GetToken()); DefaultProfile profile = DefaultProfile.GetProfile(this.regionId, this.GetBasicAccessKeyId(), this.GetBasicAccessKeySecret()); DefaultAcsClient client = new DefaultAcsClient(profile, basciCredential); CommonRequest request = new CommonRequest(); request.Domain = "ros.aliyuncs.com"; request.Version = "2015-09-01"; request.Action = "DescribeResourceTypes"; request.UriPattern = "/resource_types"; request.Method = MethodType.GET; request.QueryParameters.Add("testParams", "SDFSDFSAetTEWTEWQO(∩_∩)O哈哈~"); CommonResponse response = client.GetCommonResponse(request); Assert.Equal(200, response.HttpStatus); Assert.NotNull(response.Data); }
private void checkConfig_Click(object sender, EventArgs e) { try { localIP.Text = getLocalIP(); domainIP.Text = getDomainIP(); clientProfile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId.Text, accessKeySecret.Text); client = new DefaultAcsClient(clientProfile); if (setRecordId()) { MessageBox.Show("设置正确!"); } if (saveConfigFile()) { MessageBox.Show("保存成功!"); } } catch (Exception) { networkStatus.Text = "无网络"; } }
public void ResolveProxy() { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE); HttpRequest httpRequest = new HttpRequest(); var request = new AssumeRoleRequest(); Type type = typeof(DefaultAcsClient); var resolveProxy = Activator.CreateInstance(type, profile); MethodInfo methodInfo = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance) .Where(x => x.Name == "ResolveProxy" && x.IsPrivate) .First(); MethodInfo genericMethod = methodInfo.MakeGenericMethod(typeof(AssumeRoleResponse)); object[] parameters = { httpRequest, request }; genericMethod.Invoke(resolveProxy, parameters); request.Protocol = ProtocolType.HTTP; genericMethod.Invoke(resolveProxy, parameters); }
static void Main(string[] args) { var accessKey = Environment.GetEnvironmentVariable("ACCESS_KEY_ID") ?? "AccessKeyId"; var accessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET") ?? "AccessKeySecret"; IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKey, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); var request = new TranslateGeneralRequest(); request.FormatType = "text"; request.SourceLanguage = "zh"; request.SourceText = "你好,很高兴见到你"; request.TargetLanguage = "en"; request.Method = MethodType.POST; var response = client.GetAcsResponse(request); Console.WriteLine(response.Data.Translated); }
public void WithRoleSessionDurationSecondss() { var mock = new Mock <AlibabaCloudCredentials>(); AlibabaCloudCredentials longLivedCredentials = mock.Object; string roleArn = "roleArn"; IClientProfile profile = DefaultProfile.GetProfile("cn-shanghai", "accessKeyId", "accessKeySecret"); STSAssumeRoleSessionCredentialsProvider instance = new STSAssumeRoleSessionCredentialsProvider(longLivedCredentials, roleArn, profile); long roleSessionDurationSeconds = 1000; // No Exception instance.WithRoleSessionDurationSeconds(roleSessionDurationSeconds); Assert.Throws <ArgumentOutOfRangeException>( () => { instance.WithRoleSessionDurationSeconds(100); } ); }
public static void DescribeInstances() { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>"); DefaultAcsClient client = new DefaultAcsClient(profile); var request = new DescribeInstancesRequest(); try { var response = client.GetAcsResponse(request); Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content)); } catch (ServerException e) { Console.WriteLine(e); } catch (ClientException e) { Console.WriteLine(e); } }
public void GetInstanceRamRoleAlibabaCloudCredential() { var profile = DefaultProfile.GetProfile(); var defaultCredentialProvider = new DefaultCredentialProvider(profile, null); var exception = Assert.Throws <ClientException>(() => { defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential(); }); Assert.Equal("RegionID cannot be null or empty.", exception.Message); Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", "region_id"); profile.DefaultClientName = "test"; defaultCredentialProvider = new DefaultCredentialProvider(profile, null); var credentialProvider = defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential(); Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", null); Assert.Null(credentialProvider); }
/// <summary> /// 发送邮件 /// </summary> /// <param name="PhoneNumbers">电话号码</param> /// <param name="code">验证码</param> public SendSmsResponse SendResetEmail(string PhoneNumbers, string code) { String product = "Dysmsapi"; //短信API产品名称 String domain = "dysmsapi.aliyuncs.com"; //短信API产品域名 String accessKeyId = AliyunVariable.AliyunAccessKeyId; //你的accessKeyId String accessKeySecret = AliyunVariable.AliyunAccessKeySecret; //你的accessKeySecret IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); try { //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式 request.PhoneNumbers = PhoneNumbers; //必填:短信签名-可在短信控制台中找到 request.SignName = AliyunVariable.AliyunSignName; //必填:短信模板-可在短信控制台中找到 request.TemplateCode = Enum_SendEmailCode.UserRegistrationVerificationCode.Enum_GetString(); //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.TemplateParam = new ModifyPasswordAuthentication(code).GetString(); //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 request.OutId = "21212121211"; //请求失败这里会抛ClientException异常 SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request); return(sendSmsResponse); } catch (ServerException e) { Console.WriteLine(e.ErrorCode); Console.WriteLine(e.ErrorMessage); throw e; } catch (ClientException e) { Console.WriteLine(e.ErrorCode); Console.WriteLine(e.ErrorMessage); throw e; } }
/// <summary> /// 发送短信验证码 /// </summary> /// <param name="PhoneNumbers"></param> /// <param name="Code"></param> /// <returns></returns> public static bool SendCode(string PhoneNumbers, string Code) { bool res = false; string product = "Dysmsapi"; //短信API产品名称(短信产品名固定,无需修改) string domain = "dysmsapi.aliyuncs.com"; //短信API产品域名(接口地址固定,无需修改) IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); //IAcsClient client = new DefaultAcsClient(profile); // SingleSendSmsRequest request = new SingleSendSmsRequest(); //初始化ascClient,暂时不支持多region(请勿修改) DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); try { //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000” request.PhoneNumbers = PhoneNumbers; //必填:短信签名-可在短信控制台中找到 request.SignName = SignName; //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版 request.TemplateCode = "SMS_156471344"; //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.TemplateParam = "{\"code\":\"" + Code + "\"}"; //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 //request.OutId = "yourOutId"; //请求失败这里会抛ClientException异常 SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request); if (sendSmsResponse.Message == "OK") { res = true; } } catch { } return(res); }
/// <summary> /// 预热cdn缓存 /// </summary> public bool PurgeObjectCache(string cdnDomain, string key, out string requestId, out string taskIdOrMsg, string objectType = "File", string regionId = "cn-hangzhou") { try { var request = new PurgeObjectCachesRequest() { DomainName = RemoveHttpString(cdnDomain), ObjectPath = key, ObjectType = objectType, }; var profile = DefaultProfile.GetProfile(regionId, _accessKeyId, _accessKeySecret); var client = new DefaultAcsClient(profile); var response = client.DoAction(request); var xmlTxt = ConvertToString(response.Content); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlTxt); if (response.Status == 200) { var firstNode = xmlDoc.SelectSingleNode("PurgeObjectCachesResponse"); requestId = firstNode.SelectSingleNode("RequestId").InnerText; taskIdOrMsg = firstNode.SelectSingleNode("RefreshTaskId").InnerText; return(true); } else { var firstNode = xmlDoc.SelectSingleNode("Error"); requestId = firstNode.SelectSingleNode("RequestId").InnerText; taskIdOrMsg = string.Format("{0} : {1}", firstNode.SelectSingleNode("Code").InnerText, firstNode.SelectSingleNode("Message").InnerText); return(false); } } catch (Exception ex) { requestId = string.Empty; taskIdOrMsg = ex.Message; return(false); } }
//在某产品下申请创建一批设备 private static void TestApplyDeviceWithNames() { IClientProfile clientProfile = DefaultProfile.GetProfile("<your-region-id>", "<your-access-key-id>", "<your-access-key-secret>"); DefaultAcsClient client = new DefaultAcsClient(clientProfile); ApplyDeviceWithNamesRequest request = new ApplyDeviceWithNamesRequest(); request.ProductKey = "<productKey>"; List <String> DeviceNames = new List <string>(); for (int i = 1; i < 20; i++) { if (i < 10) { DeviceNames.Add("device_20171206_00" + i); } else { DeviceNames.Add("device_20171206_0" + i); } } request.DeviceNames = DeviceNames; try { ApplyDeviceWithNamesResponse response = client.GetAcsResponse(request); Console.WriteLine(response.Success); Console.WriteLine(response.ErrorMessage); Console.WriteLine("apply id: " + response.ApplyId); } catch (ServerException e) { Console.WriteLine(e.ErrorCode); Console.WriteLine(e.ErrorMessage); } catch (ClientException e) { Console.WriteLine(e.ErrorCode); Console.WriteLine(e.ErrorMessage); } Console.ReadKey(); }
public void GetDescribeAccessPointsResponse() { var accessKey = Environment.GetEnvironmentVariable("ACCESS_KEY_ID") ?? "AccessKeyId"; var accessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET") ?? "AccessKeySecret"; var regionId = "cn-hangzhou"; var profile = DefaultProfile.GetProfile(regionId, accessKey, accessKeySecret); var client = new DefaultAcsClient(profile); var request = new DescribeAccessPointsRequest(); request.PageSize = 10; request.PageNumber = 20; request.Type = "type"; var filter1 = new List <DescribeAccessPointsRequest.Filter>(); var filterItem1 = new DescribeAccessPointsRequest.Filter(); filterItem1.Key = "key"; filterItem1.Values = new List <string> { "value" }; filter1.Add(filterItem1); request.Filters = filter1; try { var response = client.GetAcsResponse(request); Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content)); } catch (ServerException ex) { Console.WriteLine(ex.ToString()); } catch (ClientException ex) { Console.WriteLine("ErrorCode" + ex.ErrorCode); Console.WriteLine("ErrorMessage" + ex.ErrorMessage); } }
public async Task <SendSmsResponse> SendSmsAsync(SendSmsRequest request) { var verifiedCode = new Random().Next(100000, 999999).ToString(); string product = "Dysmsapi"; //短信API产品名称(短信产品名固定,无需修改) string domain = "dysmsapi.aliyuncs.com"; //短信API产品域名(接口地址固定,无需修改) string accessKeyId = ""; //你的accessKeyId,此处需要替换成开发者自己的AK(在阿里云访问控制台寻找) string accessKeySecret = ""; //你的accessKeySecret,此处需要替换成开发者自己的AK(在阿里云访问控制台寻找) IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendSmsResponse response = null; await Task.Run(() => { try { //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000” request.PhoneNumbers = "18771506573"; //必填:短信签名-可在短信控制台中找到 request.SignName = "凡迹网"; //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版 request.TemplateCode = "SMS_107090067"; //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.TemplateParam = "{\"code\":\"dalao\"}"; //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 request.OutId = "yourOutId"; //请求失败这里会抛ClientException异常 response = acsClient.GetAcsResponse(request); } catch (ServerException e) { throw e; } catch (ClientException e) { throw e; } }); return(response); }
static void Main(string[] args) { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", "<accessKeyId>", "<secret>"); DefaultAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.Method = MethodType.POST; request.Domain = "dysmsapi.aliyuncs.com"; request.Version = "2017-05-25"; request.Action = "SendSms"; // request.Protocol = ProtocolType.HTTP // 随机生成6位验证码 var rd = new Random(); var code = new { code = rd.Next(100000, 999999) }; request.AddQueryParameters("PhoneNumbers", "18173608896"); request.AddQueryParameters("SignName", "jonty博客"); request.AddQueryParameters("TemplateCode", "SMS_197465032"); // 验证码参数,code 转json格式 request.AddBodyParameters("TemplateParam", code.ToJson()); try { CommonResponse response = client.GetCommonResponse(request); Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content)); } catch (ServerException e) { Console.WriteLine(e); } catch (ClientException e) { Console.WriteLine(e); } }
public void Send(string phoneNumber, string code) { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", _config.Value.AccessKeyId, string.Empty); DefaultAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.Method = MethodType.POST; request.Domain = _config.Value.Domain; request.Version = "2017-05-25"; request.Action = "SendSms"; request.Protocol = ProtocolType.HTTP; request.AddQueryParameters("PhoneNumbers", phoneNumber); request.AddQueryParameters("SignName", _config.Value.SignName); request.AddQueryParameters("TemplateCode", _config.Value.TemplateCode); request.AddQueryParameters("TemplateParam", JsonConvert.SerializeObject(new MessageContent { Code = code }, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })); CommonResponse response = client.GetCommonResponse(request); Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content)); if (response.HttpStatus >= 400) { AliyunSMSReponse content = null; try { content = JsonConvert.DeserializeObject <AliyunSMSReponse>(response.Data); } catch (Exception ex) { throw new MessageException(Constants.CODE_UNKONWN_ERROR, response.Data, ex); } throw new MessageException(Constants.CODE_UNKONWN_ERROR, content.Message); } }
public void AddEndpoint() { var endpointName = "AddEndpoint.someString"; var regionId = "AddEndpoint.someString"; var productName = "product_name"; var productDomain = "product_domain"; List <Endpoint> endpoints; List <ProductDomain> products; DefaultProfile.ClearProfile(); var profile = DefaultProfile.GetProfile(); // Add endpoint profile.AddEndpoint(endpointName, regionId, productName, productDomain); endpoints = profile.GetEndpoints(regionId, productName); Assert.NotNull(endpoints); foreach (var endpoint in endpoints) { Assert.Equal(endpointName, endpoint.Name); products = endpoint.ProductDomains; foreach (var product in products) { Assert.Equal(productName, product.ProductName); Assert.Equal(productDomain, product.DomainName); } } profile.AddEndpoint(endpointName, regionId, productName, productDomain); endpoints = profile.GetEndpoints(regionId, productName); Assert.NotNull(endpoints); foreach (var endpoint in endpoints) { Assert.Equal(endpointName, endpoint.Name); products = endpoint.ProductDomains; foreach (var product in products) { Assert.Equal(productName, product.ProductName); Assert.Equal(productDomain, product.DomainName); } } }
public static SendBatchSmsResponse sendSms() { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendBatchSmsRequest request = new SendBatchSmsRequest(); //request.Protocol = ProtocolType.HTTPS; //request.TimeoutInMilliSeconds = 1; SendBatchSmsResponse response = null; try { //必填:待发送手机号。支持JSON格式的批量调用,批量上限为100个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式 request.PhoneNumberJson = "[\"1500000000\",\"1500000001\"]"; //必填:短信签名-支持不同的号码发送不同的短信签名 request.SignNameJson = "[\"云通信\",\"云通信\"]"; //必填:短信模板-可在短信控制台中找到 request.TemplateCode = "SMS_1000000"; //必填:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败 request.TemplateParamJson = "[{\"name\":\"Tom\", \"code\":\"123\"},{\"name\":\"Jack\", \"code\":\"456\"}]"; //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) //request.SmsUpExtendCodeJson = "[\"90997\",\"90998\"]"; //请求失败这里会抛ClientException异常 response = acsClient.GetAcsResponse(request); } catch (ServerException e) { Console.Write(e.ErrorCode); } catch (ClientException e) { Console.Write(e.ErrorCode); Console.Write(e.Message); } return(response); }
public static AssumeRoleResponse.Credentials_ GetSecurityToken() { if (credentials != null && (DateTime.Now - _timeStamp).Seconds < 30) { //防止请求过于频繁,设置5分钟请求一次。 return(credentials); } // 构建一个 Aliyun Client, 用于发起请求 // 构建Aliyun Client时需要设置AccessKeyId和AccessKeySevcret // STS是Global Service, API入口位于杭州, 这里Region填写"cn-hangzhou" IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); var client = new DefaultAcsClient(profile); // 构造AssumeRole请求 var request = new AssumeRoleRequest(); // 指定角色Arn request.RoleArn = "acs:ram::1724377057077130:role/myfirstrole"; request.RoleSessionName = "alice"; // 可以设置Token有效期,可选参数,默认3600秒; request.DurationSeconds = 3600; // 可以设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限; // request.Policy="<policy-content>" try { AssumeRoleResponse response = client.GetAcsResponse(request); //Console.WriteLine("AccessKeyId: " + response.Credentials.AccessKeyId); //Console.WriteLine("AccessKeySecret: " + response.Credentials.AccessKeySecret); //Console.WriteLine("SecurityToken: " + response.Credentials.SecurityToken); ////Token过期时间;服务器返回UTC时间,这里转换成北京时间显示; //Console.WriteLine("Expiration: " + DateTime.Parse(response.Credentials.Expiration).ToLocalTime()); credentials = response.Credentials; _timeStamp = DateTime.Now; return(credentials); } catch (Exception ex) { return(null); //记录错误日志 } }
private async Task send(string[] receivers, SmsInformation information) { await Task.Run(() => { IClientProfile profile = DefaultProfile.GetProfile(_profile_default, _aliYunApiSetting.accessKeyId, _aliYunApiSetting.secret); DefaultAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.Method = MethodType.POST; request.Domain = _aliApiDomain; request.Version = _aliApiVersion; request.Action = _AliApiAction; // request.Protocol = ProtocolType.HTTP; string phoneNumbers = StringUtil.SplitJoint(receivers); request.AddQueryParameters(_param_PhoneNumbers, phoneNumbers); request.AddQueryParameters(_param_SignName, information.SignName); request.AddQueryParameters(_param_TemplateCode, information.TemplateCode); request.AddQueryParameters(_param_TemplateParam, information.TemplateParam); try { CommonResponse response = client.GetCommonResponse(request); var apiResult = JsonConvert.DeserializeObject <AliApiResult>(response.Data); if (apiResult.Code != _ApiResult_OK) { sendErrorLog(Localization.Sy000100.ToString(), receivers, information); } } catch (ServerException e) { sendErrorLog(e.Message, receivers, information); } catch (ClientException e) { sendErrorLog(e.Message, receivers, information); } }); }
static void Main() { IClientProfile clientProfile = DefaultProfile.GetProfile("cn-hangzhou", "<your access key id>", "<your access key secret>"); DefaultAcsClient client = new DefaultAcsClient(clientProfile); QueryDeviceStatRequest request = new QueryDeviceStatRequest(); request.AppKey = < Your AppKey >; request.QueryType = "Total"; request.DeviceType = "All"; String startTime = DateTime.UtcNow.AddDays(-7).ToString("yyyy-MM-ddTHH\\:mm\\:ssZ"); String endTime = DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ"); request.StartTime = startTime; request.EndTime = endTime; try { QueryDeviceStatResponse response = client.GetAcsResponse(request); Console.WriteLine("RequestId:" + response.RequestId); foreach (QueryDeviceStatResponse.AppDeviceStat stat in response.AppDeviceStats) { Console.WriteLine("time:" + stat.Time); Console.WriteLine("DeviceType:" + stat.DeviceType); Console.WriteLine("count:" + stat.Count); } Console.ReadLine(); } catch (ServerException e) { Console.WriteLine(e.ErrorCode); Console.WriteLine(e.ErrorMessage); Console.ReadLine(); } catch (ClientException e) { Console.WriteLine(e.ErrorCode); Console.WriteLine(e.ErrorMessage); Console.ReadLine(); } }
public static IServiceCollection AddAliyun(this IServiceCollection services, IMMSetting setting) { Requires.NotNull(setting, nameof(setting)); DefaultProfile.AddEndpoint(setting.Region, setting.Region, "Imm", setting.IMMEndpoint); var immProfile = DefaultProfile.GetProfile(setting.Region, setting.AccessKeyId, setting.AccessKeySecret); var immClient = new IMMClient(immProfile); DefaultProfile.AddEndpoint(setting.Region, setting.Region, "Sts", setting.STSEndpoint); var stsProfile = DefaultProfile.GetProfile(setting.Region, setting.AccessKeyId, setting.AccessKeySecret); var stsClient = new STSClient(stsProfile); var ossClient = new OssClient(setting.OSSEndpoint, setting.AccessKeyId, setting.AccessKeySecret); services.AddSingleton(setting); services.AddSingleton(immClient); services.AddSingleton(stsClient); services.AddSingleton(ossClient); return(services); }
public void TestAddNewEndPointManually() { var profile = DefaultProfile.GetProfile("cn-wenzhou", GetBasicAccessKeyId(), GetBasicAccessKeySecret()); var testClient = new Acs.Core.DefaultAcsClient(profile); DescribeRegionsRequest request = new DescribeRegionsRequest(); var exceptionMsg = Assert.Throws <ClientException>(() => { var response = testClient.GetAcsResponse(request); }); Assert.Equal("Can not find endpoint to access.", exceptionMsg.ErrorMessage); DefaultProfile.AddEndpoint("cn-wenzhou", "cn-wenzhou", "Ecs", "abc.cn-wenzhou.endpoint-test.exception.com"); Assert.Throws <ClientException>(() => { testClient.GetAcsResponse(request); }); }
static void Main(string[] args) { IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", "*********", "********"); // todo: 补充AK信息 DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", "Dybaseapi", "dybaseapi.aliyuncs.com"); DefaultAcsClient client = new DefaultAcsClient(profile); string queueName = "Alicom-Queue-***********-SmsReport"; // todo: 补充队列名称 string messageType = "SmsReport"; // todo: 补充消息类型 int maxThread = 2; for (int i = 0; i < maxThread; i++) { TestTask testTask = new TestTask("PullMessageTask-thread-" + i, messageType, queueName, client); Thread t = new Thread(new ThreadStart(testTask.Handle)); //启动线程 t.Start(); } }
public void GetInstanceRamRoleAlibabaCloudCredential2() { var profile = DefaultProfile.GetProfile(); profile.DefaultClientName = "default"; Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", "region_id"); Environment.SetEnvironmentVariable("ALIBABA_CLOUD_ECS_METADATA", "role_name"); var ecsRamRoleCredential = new EcsRamRoleCredential("fakeak", "fakeaks", "fakesession", DateTime.Now.ToString(), 4000); var mockEcsMetaService = new Mock <ECSMetadataServiceCredentialsFetcher>(); mockEcsMetaService.Setup(x => x.Fetch()).Returns(ecsRamRoleCredential); var eCSMetadataServiceCredentialsFetcher = mockEcsMetaService.Object; var defaultCredentialProvider = new Core.Auth.Provider.DefaultCredentialProvider(profile, eCSMetadataServiceCredentialsFetcher); var actualCredential = defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential(); Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", null); Assert.NotNull(actualCredential); Assert.Equal("fakeak", actualCredential.GetAccessKeyId()); }
public static bool SendCaptcha(string phone, string captcha) { var product = "Dysmsapi"; //短信API产品名称 var domain = "dysmsapi.aliyuncs.com"; //短信API产品域名 var accessKeyId = " "; //你的accessKeyId var accessKeySecret = " "; //你的accessKeySecret var profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); var acsClient = new DefaultAcsClient(profile); var request = new SendSmsRequest { PhoneNumbers = phone, SignName = "脚印温馨提醒", TemplateCode = "SMS_134250397", TemplateParam = "{\"code\":\"" + captcha + "\"}" }; var response = acsClient.GetAcsResponse(request); return(true); }
public virtual AlibabaCloudCredentials GetRamRoleArnAlibabaCloudCredential() { if (String.IsNullOrEmpty(this.accessKeyId) && String.IsNullOrEmpty(this.accessKeySecret) && String.IsNullOrEmpty(this.regionId)) { throw new ClientException("Missing required variable option for 'default Client'"); } RamRoleArnCredential credential = new RamRoleArnCredential( this.accessKeyId, this.accessKeySecret, this.roleArn, this.roleSessionName, STSAssumeRoleSessionCredentialsProvider.GetNewRoleSessionName(), STSAssumeRoleSessionCredentialsProvider.DEFAULT_DURATION_SECONDS); this.defaultProfile = DefaultProfile.GetProfile(this.regionId, this.accessKeyId, this.accessKeySecret); var sTSAssumeRoleSessionCredentialsProvider = (STSAssumeRoleSessionCredentialsProvider)alibabaCloudCredentialProvider; RamRoleArnCredential ramRoleArnCredential = (RamRoleArnCredential)sTSAssumeRoleSessionCredentialsProvider.GetCredentials(); return(ramRoleArnCredential); }
T getResponse <T>(AcsRequest <T> request) where T : AcsResponse { while (true) { try { var profile = DefaultProfile.GetProfile( "cn-qingdao", AccessKeyID, AccessKeySecret ); var client = new DefaultAcsClient(profile); return(client.GetAcsResponse(request)); } catch (Exception ex) { ErrorHandler(ex.Message); } Thread.Sleep(10000); } }
public bool SingleSendMail(SingleSendMailModel model) { var regionId = ConfigHelper.GetValuesByKey("EmailRegionId"); var accessKeyId = ConfigHelper.GetValuesByKey("EmailAccessKeyId"); var secret = ConfigHelper.GetValuesByKey("EmailSecret"); IClientProfile profile = DefaultProfile.GetProfile(regionId, accessKeyId, secret); IAcsClient client = new DefaultAcsClient(profile); SingleSendMailRequest request = new SingleSendMailRequest(); try { request.AccountName = model.AccountName; request.FromAlias = model.FromAlias; request.AddressType = model.AddressType; request.TagName = model.TagName; request.ReplyToAddress = model.ReplyToAddress; request.ToAddress = model.ToAddress; request.Subject = model.Subject; if (model.EmailBodyType == EmailBodyType.Html) { request.HtmlBody = model.EMailBody; } else { request.TextBody = model.EMailBody; } SingleSendMailResponse httpResponse = client.GetAcsResponse(request); return(httpResponse.HttpResponse.Status == 200); } catch (ServerException e) { LogHelper.Logger.Error(string.Format(MessageTips.SendEmailFail, "服务端原因", e.Message), e); throw new SendEmailException(string.Format(MessageTips.SendEmailFail, "服务端原因", e.Message), e); } catch (ClientException e) { LogHelper.Logger.Error(string.Format(MessageTips.SendEmailFail, "客服端原因", e.Message), e); throw new SendEmailException(string.Format(MessageTips.SendEmailFail, "客服端原因", e.Message), e); } }
/// <summary> /// 阿里云 /// </summary> /// <param name="ramcode"></param> /// <param name="PhoneNumbers"></param> public string sendCode(string ramcode, string PhoneNumbers) { string returnCode = string.Empty; String product = "Dysmsapi"; //短信API产品名称 String domain = "dysmsapi.aliyuncs.com"; //短信API产品域名 String accessKeyId = "LTAIZiLOrvoMRPS3"; //你的accessKeyId String accessKeySecret = "SB93bYFfz4BhIU3cJqkj6Fx9omUD6i"; //你的accessKeySecret IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); //IAcsClient client = new DefaultAcsClient(profile); // SingleSendSmsRequest request = new SingleSendSmsRequest(); DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); try { //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式 request.PhoneNumbers = PhoneNumbers;//"13567939495"; //必填:短信签名-可在短信控制台中找到 request.SignName = "朗朗出行"; //必填:短信模板-可在短信控制台中找到 request.TemplateCode = "SMS_80220076";//SMS_78580141 //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.TemplateParam = "{\"number\":\"" + ramcode + "\"}"; //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 request.OutId = "101010"; //请求失败这里会抛ClientException异常 SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request); returnCode = sendSmsResponse.Code; System.Console.WriteLine(sendSmsResponse.Message); } catch (ServerException e) { System.Console.WriteLine(e.Message); } return(returnCode); }