HttpClient訪問Asp.Net Core WebAPI
后端代碼:
[AllowAnonymous]
[HttpPost]
public ActionResult login([FromBody] User request)
{
if (1==1)
{
return Ok(new
{
Token = token,
Message = "Success"
});
}
return BadRequest("Invalid Request");
}
[Authorize]
public string GetItemInfo()
{
var item = (from s in _customercontext.Item
select s).ToList();
return JsonConvert.SerializeObject(item);
}
前端代碼:
private void button1_Click(object sender, EventArgs e)
{
string url = "http://8.8.8.8:8888/api/login";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("username", txtLoginId.Text);
dic.Add("password", txtPassword.Text);
string req_str = JsonConvert.SerializeObject(dic);//序列化成JSON
string result = Post(url, req_str);
ret = JsonConvert.DeserializeObject<Dictionary<string, string>>(result);//反序列化
txtToken.Text = ret["token"].ToString();
}
//Post with JSON
static Post(string url, string req_str)
{
HttpClient client = new HttpClient();
var content = new StringContent(req_str);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsync(url, content);
response.Wait();
response.Result.EnsureSuccessStatusCode();
var res = response.Result.Content.ReadAsStringAsync();
res.Wait();
return res.Result;
}
//Get with tokent:
static string Get(string url, string token)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
var response = client.GetAsync(url);
response.Wait();
response.Result.EnsureSuccessStatusCode();
var res = response.Result.Content.ReadAsStringAsync();
res.Wait();
return res.Result;
}