从 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# 中制作相同的网络服务或我在这里做错了什么的任何指示?
在 C# 代码中发出 GET 请求,请改用 HttpClient class 发出 POST 请求
这两种方式的最大区别在于前者从您的机器发出http请求,而c#代码从服务器运行您的应用发出http请求.
很有可能您的机器可以解析 api.publicstuff.com
,但机器 运行 的 c# 代码不能(在防火墙后面,或者根本没有 public 访问权限)。
我使用 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);
我可以通过 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# 中制作相同的网络服务或我在这里做错了什么的任何指示?
在 C# 代码中发出 GET 请求,请改用 HttpClient class 发出 POST 请求
这两种方式的最大区别在于前者从您的机器发出http请求,而c#代码从服务器运行您的应用发出http请求.
很有可能您的机器可以解析 api.publicstuff.com
,但机器 运行 的 c# 代码不能(在防火墙后面,或者根本没有 public 访问权限)。
我使用 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);