簡體   English   中英

如何使用代理在 c# 中調用外部 api

[英]How to call external api in c# using proxy

我有一個 API 需要通過代理調用。 他們提供了代理 url 和端口號。 我需要通過這些代理將值傳遞給 API。 我如何實現它?

API 的請求參數如下。 {

“reqdata”:“一些數據”

“msgstr”:“0”

}

API的URL:- “xxxxx”;

代理地址:- “xxxxxxx”; 端口:- “xxxxxx”;

我的代碼如下

public async Task<String> GetDetails()
{
    string apiURL= "https://some url";
    string MyProxyHostaddress = "xxxxxx";
    int MyProxyPort = 8080;
    //Bypass SSL Verification
    ServicePointManager.ServerCertificateValidationCallback +=
        delegate (object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; };

    var request = (HttpWebRequest)WebRequest.Create(apiURL);
    request.Proxy = new WebProxy(MyProxyHostaddress , MyProxyPort);
    request.Method = "POST";
    request.ContentType = "application/json";
    request.Accept = "application/json";

    RequestClass obj = new RequestClass();

    obj.reqdata= "some string";
    obj.msgid = "0";            
    string json = JsonConvert.SerializeObject(obj);
    var client = new HttpClient();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var response = await client.PostAsJsonAsync(apiURL, obj);
    string result = response.Content.ReadAsStringAsync().Result;
    return null;
}


public class RequestClass
{
    public string reqdata{get;set;}
    public string msgid{get;set;}
}
public async Task<String> RechargeWallet()
    {
        
        string apiURL = 
      ConfigurationManager.AppSettings["APIURL"].ToString();
      
        string MyProxyHostString = ConfigurationManager.AppSettings["ProxyURL"].ToString();
        int MyProxyPort = Convert.ToInt32(ConfigurationManager.AppSettings["ProxyPort"]);
       
        var request = (HttpWebRequest)WebRequest.Create(apiURL);
        request.Proxy = new WebProxy(MyProxyHostString, MyProxyPort);
        request.Method = "POST";
        request.ContentType = "application/json";
        request.Accept = "application/json";

        APIFormat req = new APIFormat();
        req.reqdata = encryptedMessage;
        req.msgid = "0";
        string jsonReq = JsonConvert.SerializeObject(req);

        using ( var streamwriter=new StreamWriter(request.GetRequestStream()))
        {
            streamwriter.Write(jsonReq);
        }

        var response = (HttpWebResponse)request.GetResponse();
        Stream stream = response.GetResponseStream();
        StreamReader sr = new StreamReader(stream);
        string s = sr.ReadToEnd();

        string decryptedMessage = decryptMessage(s);
 
       return decryptedMessage;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM