public void TestApi() { var config = new Config { AppKey = Environment.GetEnvironmentVariable("IOT_APP_KEY"), AppSecret = Environment.GetEnvironmentVariable("IOT_APP_SECRET"), Domain = "api.link.aliyun.com" }; var client = new Client(config); var param = new Dictionary <string, object> { { "input", "test" } }; var req = new CommonParams { ApiVer = "1.0.0" }; var body = new IoTApiRequest { Params = param, Request = req }; var runtime = new RuntimeOptions(); var resp = client.DoRequest("/kit/debug/ping", "HTTPS", "POST", null, body, runtime); var obj = AlibabaCloud.TeaUtil.Common.ReadAsJSON(resp.Body); var map = AlibabaCloud.TeaUtil.Common.AssertAsMap(obj); Assert.Contains("test", map.Get("data").ToSafeString()); }
/** * Send request * @param pathname the url path * @param protocol http or https * @param method example GET * @param header request header * @param body the object of IoTApiRequest * @param runtime which controls some details of call api, such as retry times * @return the response */ public TeaResponse DoRequest(string pathname, string protocol, string method, Dictionary <string, string> header, IoTApiRequest body, AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime) { body.Validate(); Dictionary <string, object> runtime_ = new Dictionary <string, object> { { "timeouted", "retry" }, { "readTimeout", AlibabaCloud.TeaUtil.Common.DefaultNumber(runtime.ReadTimeout, _readTimeout) }, { "connectTimeout", AlibabaCloud.TeaUtil.Common.DefaultNumber(runtime.ConnectTimeout, _connectTimeout) }, { "httpProxy", AlibabaCloud.TeaUtil.Common.DefaultString(runtime.HttpProxy, _httpProxy) }, { "httpsProxy", AlibabaCloud.TeaUtil.Common.DefaultString(runtime.HttpsProxy, _httpsProxy) }, { "noProxy", AlibabaCloud.TeaUtil.Common.DefaultString(runtime.NoProxy, _noProxy) }, { "maxIdleConns", AlibabaCloud.TeaUtil.Common.DefaultNumber(runtime.MaxIdleConns, _maxIdleConns) }, { "retry", new Dictionary <string, object> { { "retryable", runtime.Autoretry }, { "maxAttempts", AlibabaCloud.TeaUtil.Common.DefaultNumber(runtime.MaxAttempts, 3) }, } }, { "backoff", new Dictionary <string, object> { { "policy", AlibabaCloud.TeaUtil.Common.DefaultString(runtime.BackoffPolicy, "no") }, { "period", AlibabaCloud.TeaUtil.Common.DefaultNumber(runtime.BackoffPeriod, 1) }, } }, { "ignoreSSL", runtime.IgnoreSSL }, }; TeaRequest _lastRequest = null; Exception _lastException = null; long _now = System.DateTime.Now.Millisecond; int _retryTimes = 0; while (TeaCore.AllowRetry((IDictionary)runtime_["retry"], _retryTimes, _now)) { if (_retryTimes > 0) { int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); if (backoffTime > 0) { TeaCore.Sleep(backoffTime); } } _retryTimes = _retryTimes + 1; try { TeaRequest request_ = new TeaRequest(); request_.Protocol = AlibabaCloud.TeaUtil.Common.DefaultString(_protocol, protocol); request_.Method = AlibabaCloud.TeaUtil.Common.DefaultString(method, "POST"); request_.Pathname = pathname; request_.Headers = TeaConverter.merge <string> ( new Dictionary <string, string>() { { "host", _domain }, { "date", AlibabaCloud.TeaUtil.Common.GetDateUTCString() }, { "x-ca-nonce", AlibabaCloud.TeaUtil.Common.GetNonce() }, { "x-ca-key", _appKey }, { "x-ca-signaturemethod", "HmacSHA256" }, { "accept", "application/json" }, { "user-agent", GetUserAgent() }, }, header ); if (AlibabaCloud.TeaUtil.Common.Empty(body.Id)) { body.Id = AlibabaCloud.TeaUtil.Common.GetNonce(); } if (!AlibabaCloud.TeaUtil.Common.IsUnset(body.ToMap())) { request_.Headers["content-type"] = "application/octet-stream"; request_.Headers["content-md5"] = AlibabaCloud.APIGatewayUtil.Common.GetContentMD5(AlibabaCloud.TeaUtil.Common.ToJSONString(body.ToMap())); request_.Body = TeaCore.BytesReadable(AlibabaCloud.TeaUtil.Common.ToJSONString(body.ToMap())); } request_.Headers["x-ca-signature"] = AlibabaCloud.APIGatewayUtil.Common.GetSignature(request_, _appSecret); _lastRequest = request_; TeaResponse response_ = TeaCore.DoAction(request_, runtime_); return(response_); } catch (Exception e) { if (TeaCore.IsRetryable(e)) { _lastException = e; continue; } throw e; } } throw new TeaUnretryableException(_lastRequest, _lastException); }