C# 调用REST的最简单方法
我从jscript调用了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",
post('/MySite/myFunct', { ID:22 })
如何从C#以最地道的C#方式拨打此电话
UPD:
我还需要HTTPS解决方案
UPD:
我需要使用cookiesHttpClient=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;