[英]Make call to REST service from c#
我能夠通過 jQuery AJAX 調用發出以下 Web 請求:
params = { "session[email]": "email@email.com", "session[password]": "password" }
var token;
$.ajax({
type: "POST",
url: "https://api.publicstuff.com:443/app/auth/sign_in",
dataType: 'json',
async: false,
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Token token=123456" );
},
data: params,
success: function (response) {
if (response.success) {
alert('Authenticated!');
token = response.token;
}
});
嘗試從 c# 進行相同調用時,我無法成功聯系遠程服務器,因為我收到錯誤,指出無法找到遠程服務器。 這是我試圖在 c# 中工作的代碼:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Token token=123456");
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("session[email]", "email@email.com"),
new KeyValuePair<string, string>("session[password]", "pw")
};
var content = new FormUrlEncodedContent(pairs);
var response = client.PostAsync("https://api.publicstuff.com:443/app/auth/sign_in", content).Result;
關於如何在 C# 中創建相同的 Web 服務或我在這里做錯了什么的任何指示?
在 C# 代碼中,您要發出 GET 請求,請改用 HttpClient 類發出 POST 請求
您的兩種方式之間的最大區別在於,前者從您的機器發出 http 請求,而 c# 代碼從運行您的應用程序的服務器發出請求。
您的機器很可能可以解析api.publicstuff.com
,但運行 c# 代碼的機器不能解析(在防火牆后面,或者根本沒有公共訪問權限)。
我使用 RestSharp 進行了這項工作。 這是對我有用的代碼:
var client = new RestClient("https://api.publicstuff.com:443/app/auth/sign_in");
var request = new RestRequest(Method.POST);
request.AddParameter("session[email]", "email@email.com");
request.AddParameter("session[password]", "password");
request.AddHeader("Authorization", "Token token=123456");
IRestResponse response = client.Execute(request);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.