Cách POST dữ liệu tới Web API C#

Làm thế nào POST đẩy dữ liệu lên Web API C#? Khi làm việc với Web API các công việc thường cần làm là lấy dữ liệu từ Web API về hoặc đẩy dữ liệu lên Web API. Ở bài trước chúng tôi đã giới thiệu và hướng dẫn các bạn sử dụng phương thức GET để lấy dữ liệu từ Web API .Trong bài này chúng tôi sẽ hướng dẫn các bạn cách đẩy dữ liệu lên Web API và lấy dữ liệu về sử dụng ngôn ngữ C# bằng phương thức POST.

Phương thức POST được sử dụng để gửi dữ liệu tới Server để Insert hoặc Update dữ liệu.

Dữ liệu gửi tới Server với phương thức POST nó được lưu trữ trong request body của HTTP request.

Phương thức POST có đặc điểm là khi gửi dữ liệu nó không lưu cached, không lưu lịch sử, không thể Bookmarked và dữ liệu không hiển thị trên trình duyệt Browser.Do đó Phương thức POST bảo mật hơn phương thức GET.

Để sử dụng phương thức POST bạn cần sử dụng giao thức HTTP (Hypertext Transfer Protocol) để truyền dữ liệu giữa Client và Server.

 

Cách POST đẩy dữ liệu lên Web API C#.

Giả sử yêu cầu bài toán của chúng ta cần lấy dữ liệu thông tin của nhân viên từ hệ thống quản lý nhân sự HR, sau đó đẩy dữ liệu sang hệ thống SAP và lưu thông tin các nhân viên thông qua Web API.

 

Textbox : txt_EmployeeID là ô để nhập mã nhân viên.

Textbox : txt_EmployeeName là ô để nhập tên nhân viên.

Button : btn_PostData là để Post đẩy thông tin nhân viên từ Window Form tới Web API.

Label: lbl_Result là kết quả trả về từ Web API.

 

Code C# POST đẩy dữ liệu từ Window Form tới Web API.

Ví dụ

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;


namespace PostData_WebAPI
{
    public partial class frm_PostDataToWebAPI : Form
    {
        public frm_PostDataToWebAPI()
        {
            InitializeComponent();
        }

        private void btn_PostData_Click(object sender, EventArgs e)
        {
            HttpWebRequest webRequest;

            //Create Object Employee: Tạo đối tượng Employee
            Employee ob_Emp = new Employee();
            ob_Emp.EmployeeID = txt_EmployeeID.Text.Trim();
            ob_Emp.EmployeeName = txt_EmployeeName.Text.Trim();

            //Convert Object to Json : Chuyển đổ dữ liệu object sang json
            string str_Json = JsonConvert.SerializeObject(ob_Emp);
            
            //Call Link Web API : Gọi link web API
            string url = "https://localhost:44308/api/Employee/POST_AddEmployees";
            webRequest = (HttpWebRequest)WebRequest.Create(url);
            webRequest.Method = "POST";
            webRequest.ContentType = "application/json";
            byte[] byteArray = Encoding.UTF8.GetBytes(str_Json);
            webRequest.ContentLength = byteArray.Length;

            //Send Request to Web API : Gửi yêu cầu tới Web API
            using (Stream requestStream = webRequest.GetRequestStream())
            {
                requestStream.Write(byteArray, 0, byteArray.Length);
            }

            //Web API response : Web API phản hồi trả kết quả
            using (WebResponse response = webRequest.GetResponse())
            {
                using (Stream responseStream = response.GetResponseStream())
                {
                    StreamReader s_reader = new StreamReader(responseStream, Encoding.UTF8);
                    string result_Json = s_reader.ReadToEnd();
                    lbl_Result.Text = "INSERT DATA IS " +  result_Json;
                    lbl_Result.ForeColor = Color.Green;
                    //MessageBox.Show(result_Json);
                }
            }
        }


    }
}

 

Chạy chương trình thực hiện POST Data  

-Kết quả:

 

-Lưu ý : Bạn cần tạo Web API với hàm POST_AddEmployees như sau:

Ví dụ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Data;
using Web_API_Demo.Models;

namespace Web_API_Demo.Controllers
{
    public class EmployeeController : ApiController
    {
        // POST api/Employee/POST_AddEmployees
        [HttpPost]
        public HttpResponseMessage POST_AddEmployees(Employee emp_Object)
        {
            string result_Insert = "";
            var sql_AddEmployee = " INSERT INTO Employee_t(EmployeeID,EmployeeName)  VALUES('" + emp_Object.EmployeeID + "','" + emp_Object.EmployeeName + "') ";
            ConnDB.InsertData(sql_AddEmployee);
            result_Insert = "OK";

            if (result_Insert == "OK")
            {
                return Request.CreateResponse(HttpStatusCode.OK, result_Insert);
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
        }

 

    }
}