C# 簡易HTTP SERVER(輸出簡單JSON)
C# 簡易HTTP SERVER(輸出簡單JSON)
資料來源:
https://zetcode.com/csharp/httplistener/
https://zetcode.com/csharp/network/
https://developer.aliyun.com/article/353180
https://m.blueshop.com.tw/Thread.aspx?tbfumsubcde=BRD20141200000453662
GITHUB: https://github.com/jash-git/CS_Console_HTTPSERVER
Code
using System;
using System.Net;
using System.Text;
namespace CS_Console_httplistener
{
class Program
{
public static HttpListener listener;
public static int Port = 8001;
public static int NO = 0;
static void Pause()
{
Console.Write("Press any key to continue...");
Console.ReadKey(true);
}
static void Main(string[] args)
{
listener = new HttpListener();
/*
netsh http add urlacl url=http://+:8001/ user=users
netsh http show urlacl |findstr "8001"
netsh http show urlacl
netsh http delete urlacl url=http://+:8001/
*/
//listener.Prefixes.Add($"http://localhost:{Port}/");
//listener.Prefixes.Add($"http://127.0.0.1:{Port}/");
listener.Prefixes.Add($"http://+:{Port}/");
listener.Start();
Console.WriteLine($"Listening on port {Port}...");
while (true)
{
HttpListenerContext context = listener.GetContext();
HttpListenerRequest req = context.Request;
Console.WriteLine($"Received request for {req.Url}");
using HttpListenerResponse resp = context.Response;
resp.ContentType = "application/json";
resp.ContentEncoding = Encoding.UTF8;
NO++;
String data = String.Format("{{\"NO\":\"{0:0000}\",\"En_Name\":\"jash.liao\",\"CH_Name\":\"小廖\"}}", NO);//@"{""NO"":""001"",""En_Name"":""jash.liao"",""CH_Name"":""小廖""}";
byte[] buffer = Encoding.UTF8.GetBytes(data);
resp.ContentLength64 = buffer.Length;
using Stream ros = resp.OutputStream;
ros.Write(buffer, 0, buffer.Length);
}
Pause();
}
}
}
PS.
01.克服要能任意IP都可監聽(錯誤訊息:httplistener access denied),要賦予EXE能以系統管理員身分執行(UAC/盾牌)[Windows 權限]
02.使用curl.exe/一般瀏覽器 測試會動
03.可以用來製作簡易web api server