C# 调用REST的最简单方法

C# 调用REST的最简单方法,c#,C#,我从jscript调用了REST服务,该服务运行良好: post('/MySite/myFunct', { ID:22 }) 如何从C#以最地道的C#方式拨打此电话 UPD: 我还需要HTTPS解决方案 UPD: 我需要使用cookiesHttpClient=newhttpclient(); HttpClient client = new HttpClient(); var values = new Dictionary<string, string> { { "ID",

我从jscript调用了REST服务,该服务运行良好:

post('/MySite/myFunct', { ID:22 })
如何从C#以最地道的C#方式拨打此电话

UPD:

我还需要HTTPS解决方案

UPD:

我需要使用cookies

HttpClient=newhttpclient();
HttpClient client = new HttpClient();

var values = new Dictionary<string, string>
{
   { "ID", "22" }
};

var content = new FormUrlEncodedContent(values);

var response = await client.PostAsync("http://www.example.com", content);

var responseString = await response.Content.ReadAsStringAsync();
var值=新字典 { {“ID”,“22”} }; var内容=新的FormUrlEncodedContent(值); var response=wait client.PostAsync(“http://www.example.com“,内容); var responseString=await response.Content.ReadAsStringAsync();
传统的方法是使用
HttpClient/HttpWebRequest

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/api/Test/TestPostData");
request.Method = "POST";
SampleModel model = new SampleModel();
model.PostData = "Test";
request.ContentType = "application/json";

JavaScriptSerializer serializer = new JavaScriptSerializer();
using (var sw = new StreamWriter(request.GetRequestStream()))
      {
                 string json = serializer.Serialize(model);
                 sw.Write(json);
                 sw.Flush();
      }
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
除此之外,我更喜欢nuget

post请求的一个简单示例如下

using RestSharp;
using RestTest.Model;
private void button1_Click(object sender, EventArgs e)
{
    var client = new RestClient();
    var request = new RestRequest();
    request.BaseUrl = "http://carma.org";
    request.Action = "api/1.1/searchPlants";
    request.AddParameter("location", 4338);
    request.AddParameter("limit", 10);
    request.AddParameter("color", "red");
    request.AddParameter("format", "xml");
    request.ResponseFormat = ResponseFormat.Xml;
    var plants = client.Execute<PowerPlantsDTO>(request);
    MessageBox.Show(plants.Count.ToString());
} 
用于在请求中添加标头 获取请求
private RestClient=new RestClient(“http://localhost:8080/api/");
RestRequest请求=新的RestRequest(“产品”,Method.GET);
resresponse response=client.Execute(请求);
var name=response.Data.name;

您只是在寻找
HttpClient
类吗?MSDN可能与此类似的版本很好!但是现在我发现我需要HTTPS。如何处理?需要有一个受信任的SSL证书,否则您的呼叫将因不受信任的错误而失败。并添加到客户端:
WebRequestHandler=newwebrequesthandler();X509Certificate2 certificate=GetMyX509Certificate();handler.ClientCertificates.Add(证书);HttpClient=新的HttpClient(处理程序)HTTPS也可以!但现在我需要发出请求,保存cookie并在另一个请求中使用它。如何实现这一点?
HttpClient
具有带有
HttpClientHandler
的构造函数,它具有公共属性
CookieContainer
,请在此处设置cookie
public void Create(Product product)
{
  var request = new RestRequest("Products", Method.POST); < ----- Use Method.PUT for update
  request.AddJsonBody(product);
  client.Execute(request);
}
public void Delete(int id)
{
  var request = new RestRequest("Products/" + id, Method.DELETE);
  client.Execute(request);
}
request.AddHeader("data", "test");
private RestClient client = new RestClient("http://localhost:8080/api/");
RestRequest request = new RestRequest("Products", Method.GET);

RestResponse<YourDataModel> response = client.Execute<YourDataModel>(request);
var name = response.Data.Name;