109 lines
3.5 KiB
Plaintext
109 lines
3.5 KiB
Plaintext
using System;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using MySql.Data.MySqlClient;
|
|
using Newtonsoft.Json;
|
|
using System.Collections.Generic;
|
|
|
|
class Program
|
|
{
|
|
static void Main()
|
|
{
|
|
// Create an HttpListener to handle incoming HTTP requests
|
|
HttpListener listener = new HttpListener();
|
|
|
|
// Add a prefix to listen to, e.g., http://localhost:8080/
|
|
listener.Prefixes.Add("http://localhost:5000/");
|
|
|
|
// Start listening for incoming requests
|
|
listener.Start();
|
|
Console.WriteLine("Server is listening on http://localhost:5000/");
|
|
|
|
// Handle requests on a separate thread to keep server responsive
|
|
Thread listenerThread = new Thread(() =>
|
|
{
|
|
while (true)
|
|
{
|
|
// Wait for a request
|
|
HttpListenerContext context = listener.GetContext();
|
|
// Get the request and response objects
|
|
HttpListenerRequest request = context.Request;
|
|
HttpListenerResponse response = context.Response;
|
|
// Check if the requested URL is /api
|
|
if (request.Url.AbsolutePath == "/api")
|
|
{
|
|
string connectionString = "Server=localhost;Port=5050;Database=your_database;User ID=your_user;Password=your_password;";
|
|
MySqlConnection conn = new MySqlConnection(connectionString);
|
|
|
|
try
|
|
{
|
|
// Open the connection
|
|
conn.Open();
|
|
|
|
// Prepare the SQL query
|
|
string query = "SELECT * FROM User;";
|
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
|
|
|
// Execute the query and read the results
|
|
MySqlDataReader reader = cmd.ExecuteReader();
|
|
StringBuilder result = new StringBuilder();
|
|
|
|
while (reader.Read())
|
|
{
|
|
// Assuming User table has columns "id", "name", and "email"
|
|
result.AppendLine($"ID: {reader["id"]}, Name: {reader["name"]}, Email: {reader["email"]}");
|
|
// Prepare the response message
|
|
string responseMessage = result.ToString();
|
|
|
|
|
|
if (string.IsNullOrEmpty(responseMessage))
|
|
{
|
|
responseMessage = "No data found.";
|
|
}
|
|
|
|
byte[] buffer = Encoding.UTF8.GetBytes(responseMessage);
|
|
|
|
// Set the response content type and write the response
|
|
response.ContentType = "text/plain";
|
|
response.ContentLength64 = buffer.Length;
|
|
response.OutputStream.Write(buffer, 0, buffer.Length);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Handle any connection errors
|
|
string errorMessage = $"Error: {ex.Message}";
|
|
byte[] buffer = Encoding.UTF8.GetBytes(errorMessage);
|
|
response.ContentType = "text/plain";
|
|
response.ContentLength64 = buffer.Length;
|
|
response.OutputStream.Write(buffer, 0, buffer.Length);
|
|
}
|
|
finally
|
|
{
|
|
// Close the connection
|
|
conn.Close();
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
// Return 404 for other paths
|
|
response.StatusCode = 404;
|
|
string errorMessage = "Not Found";
|
|
byte[] buffer = Encoding.UTF8.GetBytes(errorMessage);
|
|
response.ContentType = "text/plain";
|
|
response.ContentLength64 = buffer.Length;
|
|
response.OutputStream.Write(buffer, 0, buffer.Length);
|
|
}
|
|
|
|
// Close the response
|
|
response.OutputStream.Close();
|
|
}
|
|
});
|
|
|
|
// Start the listener thread
|
|
listenerThread.Start();
|
|
}
|
|
}
|
|
|