簡體   English   中英

從 C# 調用 REST 服務

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

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