ASP.Net: WebApi รับค่า Header

  1. สร้างโปรเจ็กส์ WebApi
  2. สร้าง WebForm ทดลองส่ง Header

ถ้าไม่ส่ง Header ดูที่ ASP.Net: WebApi คืนค่าและรับค่าเป็นคลาส

1.สร้างโปรเจ็กส์ WebApi

ต้องส่ง Header ชื่อ Custom มาถึงจะใช้งานได้ ไม่งั้นจะคืนค่า “Unauthorized access”

using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;

namespace WebApi.Controllers
{
    public class Person
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

    public class ValuesController : ApiController
    {
        // POST api/values
        //public void Post([FromBody]string value)
        //{
        //}
        public string Post([FromBody]Person param)
        {
            HttpRequestMessage req = Request;
            var headers = req.Headers;

            if (headers.Contains("Custom"))
            {
                string token = headers.GetValues("Custom").First();

                return param.ID + " " +
                    param.FirstName + " " +
                    param.LastName;
            }
            else {
                return "Unauthorized access";
            }            
        }
    }
}

2.สร้าง WebForm ทดลองส่ง Header

using System;
using System.IO;
using System.Net;

namespace WebApp2
{
    public partial class WebForm1 : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            string url = "http://localhost:61785/api/values";

            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "POST";
            httpWebRequest.Headers.Add("Custom","My Secret");

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = "{\"ID\": 1," +
                "\"FirstName\": \"Phaisarn\"," +
                "\"LastName\": \"Sutheebanjard\"}";

                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
            }            
        }
    }
}