• Stars
    star
    348
  • Rank 121,129 (Top 3 %)
  • Language
    C#
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tencent Cloud API 3.0 SDK for .NET

简介

欢迎使用腾讯云开发者工具套件( SDK )3.0 ,SDK 3.0 是云 API 3.0 平台的配套工具。后续所有的云服务产品都会接入进来。新版 SDK 实现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,统一的错误码和返回包格式这些优点。

为方便 .NET 开发者调试和接入腾讯云产品 API ,这里向您介绍适用于 .NET 的腾讯云开发工具包,并提供首次使用开发工具包的简单示例。让您快速获取腾讯云 .NET SDK 并开始调用。

依赖环境

  1. 依赖环境:兼容 .NET standard 2.0(.NET Framework 4.5+ 或者 .NET Core 2.1)。
  2. 从 腾讯云控制台 开通相应产品。
  3. 获取 SecretID 、 SecretKey 以及调用地址( endpoint ), endpoint 一般形式为 *.tencentcloudapi.com ,如 CVM 的调用地址为 cvm.tencentcloudapi.com ,具体参考各产品说明。
  4. 下载相关资料并做好相关文件配置。

获取安装

安装 .NET SDK 前,先获取安全凭证。在第一次使用云API之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID 和 SecretKey , SecretID 是用于标识 API 调用者的身份, SecretKey 是用于加密签名字符串和服务器端验证签名字符串的密钥。 SecretKey 必须严格保管,避免泄露。

通过nuget 安装(推荐)

  1. 通过命令行安装: dotnet add package TencentCloudSDK ,其他信息请到 nuget 获取。如果想单独安装某个产品,例如云服务器 CVM,则添加依赖 TencentCloudSDK.Cvm 即可。

  2. 通过 Visual Studio 的添加包

通过源码安装

前往 Github 仓库 或者 Gitee 仓库 下载最新代码,解压后使用 Visual Studio 2017 打开编译。

示例

每个接口都有一个对应的 Request 结构和一个 Response 结构。例如云服务器的查询实例列表接口 DescribeInstances 有对应的请求结构体 DescribeInstancesRequest 和返回结构体 DescribeInstancesResponse 。

下面以云服务器查询实例列表接口为例,介绍 SDK 的基础用法。

简略版

using System;
using System.Threading.Tasks;
using TencentCloud.Common;
using TencentCloud.Cvm.V20170312;
using TencentCloud.Cvm.V20170312.Models;

namespace TencentCloudExamples
{
    class DescribeInstances
    {
        static void Main(string[] args)
        {
            try
            {
                // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中。
                // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
                // 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
                Credential cred = new Credential {
                    SecretId = Environment.GetEnvironmentVariable("TENCENTCLOUD_SECRET_ID"),
                    SecretKey = Environment.GetEnvironmentVariable("TENCENTCLOUD_SECRET_KEY")
                };               
                CvmClient client = new CvmClient(cred, "ap-guangzhou");
                DescribeInstancesRequest req = new DescribeInstancesRequest();
                DescribeInstancesResponse resp = client.DescribeInstancesSync(req);
                Console.WriteLine(AbstractModel.ToJsonString(resp));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

详细版

using System;
using System.Threading.Tasks;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Cvm.V20170312;
using TencentCloud.Cvm.V20170312.Models;

namespace TencentCloudExamples
{
    class DescribeInstances
    {
        static void Main(string[] args)
        {
            try
            {
                // 必要步骤:
                // 实例化一个认证对象,入参需要传入腾讯云账户密钥对 SecretId,SecretKey。
                // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中。
                // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
                // 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
                Credential cred = new Credential {
                    SecretId = Environment.GetEnvironmentVariable("TENCENTCLOUD_SECRET_ID"),
                    SecretKey = Environment.GetEnvironmentVariable("TENCENTCLOUD_SECRET_KEY")
                };               

                // 实例化一个client选项,可选的,没有特殊需求可以跳过
                ClientProfile clientProfile = new ClientProfile();
                // 指定签名算法为签名方法v3(TC3-HMAC-SHA256),可以处理超过1MB的请求。(从3.0.711版本起,默认已设置为签名方法v3)
                clientProfile.SignMethod = ClientProfile.SIGN_TC3SHA256;
                // 非必要步骤
                // 实例化一个客户端配置对象,可以指定超时时间等配置
                HttpProfile httpProfile = new HttpProfile();
                // SDK默认使用POST方法。
                // 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求。
                httpProfile.ReqMethod = "POST";
                // SDK有默认的超时时间,非必要请不要进行调整。
                // 如有需要请在代码中查阅以获取最新的默认值。
                httpProfile.Timeout = 10; // 请求连接超时时间,单位为秒(默认60秒)
                // SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务,
                // 则必须手动指定域名,例如云服务器的上海金融区域名: cvm.ap-shanghai-fsi.tencentcloudapi.com
                httpProfile.Endpoint = ("cvm.tencentcloudapi.com");
                // 代理服务器,当你的环境下有代理服务器时设定
                httpProfile.WebProxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");

                clientProfile.HttpProfile = httpProfile;

                // 实例化要请求产品(以cvm为例)的client对象
                // 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量,clientProfile是可选的
                CvmClient client = new CvmClient(cred, "ap-guangzhou", clientProfile);

                // 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
                // 你可以直接查询SDK源码确定DescribeInstancesRequest有哪些属性可以设置,
                // 属性可能是基本类型,也可能引用了另一个数据结构。
                // 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明。
                DescribeInstancesRequest req = new DescribeInstancesRequest();
              
                // 基本类型的设置。
                // 此接口允许设置返回的实例数量。此处指定为只返回一个。
                // SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
                // SDK提供对基本类型的指针引用封装函数
                req.Limit = 1;
                // 数组类型的设置。
                // 此接口允许指定实例 ID 进行过滤,但是由于和接下来要演示的 Filter 参数冲突,先注释掉。
                // req.InstanceIds = new string[] { "ins-r8hr2upy" };

                // 复杂对象的设置。
                // 在这个接口中,Filters是数组,数组的元素是复杂对象Filter,Filter的成员Values是string数组。
                // 填充请求参数,这里request对象的成员变量即对应接口的入参
                // 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义
                Filter respFilter = new Filter(); // 创建Filter对象, 以zone的维度来查询cvm实例
                respFilter.Name = "zone";
                respFilter.Values = new string[] { "ap-guangzhou-1", "ap-guangzhou-2" };
                req.Filters = new Filter[] { respFilter }; // Filters 是成员为Filter对象的列表

                //// 这里还支持以标准json格式的string来赋值请求参数的方式。下面的代码跟上面的参数赋值是等效的
                //string strParams = "{\"Filters\":[{\"Name\":\"zone\",\"Values\":[\"ap-guangzhou-1\",\"ap-guangzhou-2\"]}]}";
                //req = DescribeInstancesRequest.FromJsonString<DescribeInstancesRequest>(strParams);

                // 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的
                // 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应
                DescribeInstancesResponse resp = client.DescribeInstancesSync(req);

                // 使用同步接口调用结果
                // DescribeInstancesResponse resp = client.DescribeInstancesSync(req);

                // 输出json格式的字符串回包
                Console.WriteLine(AbstractModel.ToJsonString(resp));

                // 也可以取出单个值。
                // 你可以通过官网接口文档或跳转到response对象的定义处查看返回字段的定义
                Console.WriteLine(resp.TotalCount);
    
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            Console.Read();
        }
    }
}

CommonClient

从 v3.0.713 开始,腾讯云 DOTNET SDK 支持使用 泛用型的API调用方式(Common Client) 进行请求。您只需安装 common 包, 即可向任何产品发起调用。

注意,您必须明确知道您调用接口的参数内容,否则会调用失败。

详细使用请参阅示例:使用 Common Client 进行调用

更多示例参见 github TencentCloudExamples 目录。

同步调用与异步调用

新版本SDK中同时提供了异步接口和同步接口,同步接口统一在异步接口之后添加了Sync后缀,在上述代码中已有样例。

注意:

在 TencentCloudExamples 示例项目中由于是控制台应用程序,所以可以使用同步方式调用异步接口,即ConfigureAwait(false).GetAwaiter().GetResult()。 在开发 ASP 应用程序,或者 Windows Forms 应用程序时,UI 控件的响应方法中,不能使用同步方式调用异步接口,否则会造成界面停止响应。 解决的办法是将 UI 控件的响应方法改为异步,同时要注意同步上下文。 另外,由于异步调用立即返回控制权给用户,很容易造成用户多次点击,或者用户进行了一些不期望的操作,程序中应注意此类问题。 源码可以参考项目中的WindowsFormsDemo项目。

常见问题

SDK 依赖的 FluentClient 使用的是3.2版本,但这个包目前发布了4.0版本且不兼容低版本,在 nuget 中升级此包到4.0版本会导致无法调用或调用失败等问题。

旧版SDK

我们推荐您使用新版 SDK , 如果需要旧版 SDK ,请访问 qcloudapi sdk for dotnet

More Repositories

1

TIMSDK

Tencent Cloud Chat features a comprehensive suite of solutions including global access, one-to-one chat, group chat, message push, profile and relationship chain hosting, and account authentication.
Java
2,562
star
2

tencentcloud-sdk-go

Tencent Cloud API 3.0 SDK for Golang
Go
631
star
3

tencentcloud-sdk-python

Tencent Cloud API 3.0 SDK for Python
Python
534
star
4

tencentcloud-sdk-java

Tencent Cloud API 3.0 SDK for Java
Java
516
star
5

O266player

C
378
star
6

tencentcloud-sdk-nodejs

Tencent Cloud API 3.0 SDK for NodeJS
TypeScript
364
star
7

tencentcloud-sdk-php

Tencent Cloud API 3.0 SDK for PHP
PHP
350
star
8

serverless

TencentCloud Serverless
Python
230
star
9

httpdns-sdk-android

Tencent Cloud HTTPDNS SDK
Kotlin
170
star
10

tencentcloud-monitor-grafana-app

Tencent Cloud Monitor App Plugin for Grafana
TypeScript
151
star
11

httpdns-sdk-ios

智营防劫持SDK
Objective-C
150
star
12

tencentcloud-iot-sdk-embedded-c

SDK for connecting to Tencent Cloud IoT from a device using embedded C.
C
148
star
13

chat-uikit-flutter

A powerful Flutter chat UI component library and business logic for Tencent Cloud Chat, creating seamless in-app chat modules for delightful user experiences.
Dart
138
star
14

chat-uikit-vue

Build In-App Chat & Audio/Video Call & Live Streaming in minutes with UIKit components for Vue
Vue
128
star
15

chat-uikit-uniapp

腾讯云 IM 的 uniapp UI 组件库,支持 vue2/vue3,在几分钟内即可构建应用内聊天、音视频通话和直播功能。
Vue
114
star
16

tencentcloud-iot-explorer-sdk-embedded-c

SDK for embedded system connect and comunicate with Tencent Cloud IoT Explorer Platform
C
111
star
17

cosbrowser

腾讯云 COS 客户端
89
star
18

chat-demo-flutter

The sample app showcasing Tencent Cloud Chat integration with Flutter across iOS, Android, Web, macOS, and Windows platforms.
C
89
star
19

tc-iot-sdk-embedded-for-esp8266

C
81
star
20

tencentcloud-cloud-controller-manager

tencentcloud cloud controller manager for kubernetes
Go
81
star
21

scf-node-debug

JavaScript
76
star
22

chat-uikit-react

Build In-App Chat & Audio/Video Call & Live Streaming in minutes with UIKit components for React
TypeScript
69
star
23

libtquic-sdk

腾讯TQUIC-跨平台通用QUIC网络库
Objective-C
68
star
24

trtc-education-electron

教育场景化解决方案App,包含基础的实时音视频通信和即时通信功能,支持丰富的课堂互动(举手、点名/签到等)和教育白板。 技术栈:Electron、React、Material-ui react、Webpack、sass等。
TypeScript
66
star
25

chat-uikit-wechat

腾讯云即时通信 IM,基于微信小程序原生的开源 UI 组件
JavaScript
65
star
26

tencentcloud-cli

Tencent Cloud API 3.0 Command Line Interface
Python
62
star
27

TPNS-Flutter-Plugin

Dart
60
star
28

kubernetes-csi-tencentcloud

kubernetes csi volume plugin for tencentcloud
Go
56
star
29

tencentcloud-sdk-cpp

Tencent Cloud API 3.0 SDK for C++
C++
53
star
30

tencentcloud-speech-sdk-js

JavaScript
52
star
31

chat-uikit-android

Tencent Cloud Chat UI Components For Android
Java
28
star
32

tc-ocr-sdk

通用文字识别客户端SDK
JavaScript
28
star
33

tencentcloud-sdk-ruby

Tencent Cloud API 3.0 SDK for Ruby
Ruby
27
star
34

cos-action

Github Action to upload to Tencent Cloud COS
JavaScript
26
star
35

wemeet-restapi-sdk-java

腾讯会议开放平台java sdk
Java
25
star
36

chat-uikit-ios

Tencent Cloud Chat UI Components For iOS
Objective-C
24
star
37

tencentcloud-speech-sdk-python

Python
23
star
38

tencentcloud-sdk-android-soe

soe android sdk
Java
17
star
39

chat-sdk-flutter

腾讯云即时通信IM Flutter 无UI SDK
Dart
16
star
40

cluster-api-provider-tencent

Go
16
star
41

tencentcloud-im-sdk-java

腾讯云 即时通信IM RESTAPI SDK Java 版本
Java
16
star
42

tencentcloud-cls-sdk-go

cls log go sdk
Go
15
star
43

tencentcloud-speech-sdk-go

Go
14
star
44

tencentcloud-iot-explorer-ble-sdk-embedded

C
14
star
45

tcb-sdk-php

tencent cloud base sdk for php
PHP
13
star
46

tencentcloud-sdk-ios-soe

soe iOS sdk
C
13
star
47

signature-process-demo

Demonstrate Cloud API Signature Process.
C#
12
star
48

tencentcloud-im-sdk-php

腾讯云 即时通信IM RESTAPI SDK PHP 版本
PHP
12
star
49

container-demo

Tencent Cloud Container Products (TKE, EKS, Edge, TCM, TCR etc) Examples
Java
11
star
50

tencentcloud-demo-mp-soe

soe wechat miniprogram demo
JavaScript
10
star
51

joox-sdk-android

JOOX SDK/demo 仓库
Kotlin
10
star
52

chat-demo-electron

腾讯云即时通信IM Electron Demo
TypeScript
10
star
53

chat-demo-react-native

Tencent Cloud IM(Chat) React Native Demo
TypeScript
9
star
54

virtualman-render-demo

云小微数智人移动端渲染demo,包括云渲染以及端渲染示例代码
JavaScript
9
star
55

chat-demo-flutter-hybrid

Tencent Cloud Chat: Samples of integratation Flutter SDK to an existing app.
Dart
9
star
56

ERDN

基于同感受野可变形卷积网络的视频去模糊
Python
9
star
57

cls-iframe-demo

CLS iframe demo. https://cloud.tencent.com/document/product/614/45742
JavaScript
9
star
58

tencentcloud-cls-sdk-android

腾讯云CLS Android SDK
Java
8
star
59

tencentcloud-sdk-java-intl-en

Tencent Cloud API 3.0 SDK for Java
Java
8
star
60

hostpathperpod

A simple flex volume plugin like hostPath, but create a host directory with pod meta.
Go
8
star
61

tencentcloud-serverless-nodejs

腾讯云云函数SDK,集成云函数业务流接口
JavaScript
8
star
62

cls-console-sdk

You can embed Tencent Cloud CLS into other systems to access logs without login, which can help you use CLS (including search and analysis, dashboard, and other features) more efficiently. 将腾讯云日志服务以内嵌方式集成到其他系统中,免登录实现一站式日志访问,方便快捷使用CLS日志服务(包含检索分析,仪表盘)
TypeScript
8
star
63

Serverless-demos

7
star
64

cos-sdk-flutter-plugin

对象存储COS Flutter语言SDK(桥接plugin实现)
Dart
7
star
65

tencentcloud-cls-sdk-java

cls日志sdk
Java
6
star
66

tencentcloud-speech-sdk-cpp

C++
6
star
67

tencentcloud-sdk-python-intl-en

Tencent Cloud API 3.0 SDK for Python
Python
6
star
68

tcb-sdk-dotnet

云开发 .NET SDK
C#
6
star
69

tencentcloud-cls-sdk-cpp

腾讯云CLS CPP SDK
C++
6
star
70

tencentcloud-cls-sdk-js

cls log js sdk
TypeScript
6
star
71

tencentcloud-cls-sdk-ios

腾讯云 CLS IOS SDK
C
6
star
72

tencentcloud-iot-explorer-ble-sdk-embedded-demo

C
6
star
73

wemeet-restapi-sdk-php

腾讯会议开放平台php sdk
PHP
5
star
74

tencentcloud-opentelemetry-java

腾讯云APM团队基于opentelemetry-java-instrumentation开源项目进行二次开发
5
star
75

Serverless-examples

云函数(Serverless Cloud Function,SCF)示例代码库
Python
5
star
76

cls-grafana-datasource

TencentCloud Log Service datasource plugin for Grafana
TypeScript
5
star
77

tdmq-go-client

Go
5
star
78

tencentcloud-cls-sdk-python

腾讯云日志服务python sdk
Python
5
star
79

chat-plugin-ue5

Tencent Cloud Chat for IM Unreal Engine 5
C++
5
star
80

tdmq-java-client

Java
5
star
81

cos-sdk-react-native-plugin

对象存储COS React Native语言SDK(桥接plugin实现)
TypeScript
5
star
82

tione-tilearn-angel

腾讯云TI平台tilearn-angel训练推理加速最佳实践案例集
Shell
5
star
83

tencentcloud-cls-logback-appender

tencentcloud cls logback appender
Java
4
star
84

ckafka-sdk-demo

腾讯云CKafka各语言demo
C
4
star
85

tencentcloud-sdk-go-intl-en

Tencent Cloud API 3.0 SDK for Golang
Go
4
star
86

tencent-chat-i18n-tool

An easy-to-use and versatile Flutter internationalization tool tailored for application using Tencent Cloud Chat, streamlining multi-language support for developers.
Dart
4
star
87

tencentcloud-speech-sdk-java

Java
4
star
88

smh-sdk-android

腾讯云智能媒资托管服务(https://cloud.tencent.com/product/smh) Android SDK,实现手机端媒体文件的上传、下载与云端管理功能。
Kotlin
4
star
89

rocketmq-demo

腾讯云 RocketMQ 当前有较多的用户尝试接入,但是很多用户在第一次接入的时候会有较多的问题,该仓库的目的在于给用户提供多种语言 SDK 接入的代码 Demo。根据不同的功能以及使用场景,提供规范的接入 Demo 代码,用户开箱即用,降低用户接入的成本而且可以避免用户由于错误使用导致的故障等问题。
Java
4
star
90

tavmedia-sdk-ios

全平台视频剪辑方案
Objective-C
3
star
91

tencentcloud-speech-sdk-java-example

Java
3
star
92

huiyan-faceid-demo

慧眼产品的对外使用示例代码的Example
Java
3
star
93

tencentcloud-sdk-dotnet-intl-en

Tencent Cloud API 3.0 SDK for .NET
C#
3
star
94

tcb-manager-sdk-php

PHP
3
star
95

TPNS-iOS-CocoaPods

腾讯移动推送iOS SDK pod仓库
Objective-C
3
star
96

qapm-sdk-ios

主要用来更新qapm性能监控组件
Objective-C
3
star
97

tke-cluster-credential-action

Retrieve TKE cluster credential and set it to $HOME/.kube/config.
JavaScript
3
star
98

tencentcloud-cls-sdk-php

腾讯云CLS PHP SDK
PHP
3
star
99

apigateway-demo

Python
3
star
100

tencentcloud-speech-sdk-dotnet

语音识别SDK
C#
3
star