Updated on 2024-01-26 GMT+08:00

C#

Scenarios

To use C# to call an API through App authentication, obtain the C# SDK, open the project file in the SDK, and then call the API by referring to the API calling example.

Prerequisites

  • You have obtained API calling information. For details, see Preparations.
  • You have installed the C# development environment. For details, see Preparations.

Obtaining the SDK

Old version: Log in to the ROMA Connect console, choose API Connect > API Calling > SDKs, and download the SDK.

New version: Log in to the ROMA Connect console, choose API Connect > Credentials > SDKs, and download the SDK.

The following shows the directory structure after the decompression.

Name

Description

apigateway-signature\Signer.cs

SDK code

apigateway-signature\HttpEncoder.cs

sdk-request\Program.cs

Sample code for signing requests

backend-signature\

Sample project for backend signing

csharp.sln

Project file

licenses\license-referencesource

Third-party licenses

Opening the Sample Project

Double-click csharp.sln in the SDK package to open the project. The project contains the following:

  • apigateway-signature: Shared library that implements the signature algorithm. It can be used in the .Net Framework and .Net Core projects.
  • backend-signature: Example of a backend service signature.
  • sdk-request: Example of invoking the signature algorithm. Modify the parameters as required. For details about the sample code, see API Calling Example.

API Calling Example

  1. Import the SDK to the project.
    using APIGATEWAY_SDK;
  2. Generate a signer and enter the key and secret of the authorized credential. For details about how to obtain the information, see Obtaining API Calling Information.
    Signer signer = new Signer();
    // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. 
    // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK.
    signer.Key = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_AK");
    signer.Secret = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_SK");
  3. Generate a request, and specify the method, request URL, and body. For details about how to obtain the information, see Obtaining API Calling Information.
    HttpRequest r = new HttpRequest("POST",    
                        new Uri("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?query=value"));
    r.body = "{\"a\":1}";
  4. Add the x-stage header to the request to specify the environment. Add other headers to sign as required.
    r.headers.Add("x-stage", "RELEASE");
  5. Execute the following function to generate HttpWebRequest, and add the X-Sdk-Date and Authorization headers for signing the request:
    1
    HttpWebRequest req = signer.Sign(r);
    
  6. If the subdomain name allocated by the system is used to access the API of HTTPS requests, ignore the certificate verification. Otherwise, skip this step.
    System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; });
  7. Access the API and view the access result.
    var writer = new StreamWriter(req.GetRequestStream());
    writer.Write(r.body);
    writer.Flush();
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
    var reader = newStreamReader(resp.GetResponseStream());
    Console.WriteLine(reader.ReadToEnd());