use HttpWebRequest to post data 前言利用HttpWebRequest來Post資料是很常見的需求,由於我每次一碰到就要重新Google尋找寫法 乾脆記在自己部落格好了XD 實作要說我的寫法和普羅大眾有什麼特別不同,那就是送出去的參數我不組QueryString字串,我使用NameValueCollection物件 ↓Console專案範例程式碼 using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
namespace ConsoleApp1Post
{
class Program
{
static void Main(string[] args)
{
string url = "https://www.einvoice.nat.gov.tw/BIZAPIVAN/biz";
string appId = "";
string pCode = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
NameValueCollection postParams = System.Web.HttpUtility.ParseQueryString(string.Empty);
postParams.Add("version", "1.0");
postParams.Add("action", "preserveCodeCheck");
postParams.Add("pCode", pCode);
postParams.Add("TxID", Guid.NewGuid().ToString());
postParams.Add("appId", appId);
byte[] byteArray = Encoding.UTF8.GetBytes(postParams.ToString());
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(byteArray, 0, byteArray.Length);
}
string responseStr = "";
using (WebResponse response = request.GetResponse())
{
using (StreamReader sr = new StreamReader(response.GetResponseStream(),Encoding.UTF8))
{
responseStr = sr.ReadToEnd();
}
}
Console.Write(responseStr);
Console.ReadKey();
}
}
}
如果回傳字串是JSON格式的話,可以使用Json.NET來建立JObject物件存取資料 JObject obj = (JObject)JsonConvert.DeserializeObject(responseStr);
Console.WriteLine(Convert.ToString(obj["isExist"]));
※此範例程式碼為財政部電子發票API,其中一項依傳入的愛心碼判斷是否存在於電子發票整合服務平台。 2019-03-14追記:ContentType 為 application/json 的Post處理方式 string url = "yourUrl";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
var postData =
new
{
LoginID = "帳號",
PWD = "密碼"
};
string postBody = JsonConvert.SerializeObject(postData);
byte[] byteArray = Encoding.UTF8.GetBytes(postBody);
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(byteArray, 0, byteArray.Length);
}
string responseStr = "";
using (WebResponse response = request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.UTF8))
{
responseStr = reader.ReadToEnd();
}
}
Console.WriteLine(responseStr);
|