[英]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.