我有一个预警消息接收调用的文档,需要实现接口数据调用和返回。请见下面的文档。需要用C#做一个demo程序。
http://101.43.218.219/DouyinTestB/1002.htm
参考GPT和自己的思路:以下是使用C#实现http协议的接口接收数据的示例程序:
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
namespace HttpPostExample
{
class Program
{
static void Main(string[] args)
{
string url = "http://112.124.23.63:1888/ai/message";
string jsonString = "{\"rtspUrl\":\"rtsp://192.168.2.77:11100/live\",\"boxId\":\"80\",\"type\":\"11\",\"typeName\":\"禁区闯入\",\"boxName\":\"加油站\",\"deviceName\":\"卸油区\",\"GBID\":\"60082006\",\"deviceId\":\"exghlou346lk\",\"indexCode\":\"2850063219\",\"enterName\":\"xx科技\",\"enterCode\":\"3006259\",\"signBigAvatar\":\"09xgb…xcv12\",\"signAvatar\":\"09xgb…xcv12\",\"signTime\":\"2022-12-05 15:12:03\",\"channelNo\":\"83\",\"x\":\"62\",\"y\":\"500\",\"w\":\"180\",\"h\":\"89\",\"messagerType\":\"\",\"eBike\":\"1\",\"smoke\":\"1\",\"fire\":\"1\",\"isExist\":\"1\",\"ext\":\"1\",\"tanker\":\"2\",\"sudire\":\"2\",\"fireControl\":\"2\",\"cover\":\"2\",\"licensePlateNumber\":\"皖AA82G7\",\"illegalParking\":\"1\",\"age\":\"28\",\"gender\":\"0\",\"glasses\":\"1\",\"mask\":\"1\"}";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
byte[] byteArray = Encoding.UTF8.GetBytes(jsonString);
request.ContentLength = byteArray.Length;
using (Stream streamWriter = request.GetRequestStream())
{
streamWriter.Write(byteArray, 0, byteArray.Length);
}
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseString = reader.ReadToEnd();
Console.WriteLine(responseString);
}
catch (WebException ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
Console.ReadLine();
}
}
}
用HttpWebRequest对象创建了一个POST请求,设置了Content-Type为"application/json",并将JSON字符串写入请求流中。接下来,我们发送请求并等待响应。最后,我们从响应流中读取响应字符串并将其打印到控制台上。
值得注意的是,在此示例程序中,我们将JSON字符串硬编码为一个C#字符串。在实际应用中,你需要根据具体情况动态生成JSON字符串,例如使用JSON库(例如Json.NET)或JavaScriptSerializer类来序列化C#对象为JSON字符串。
C# json post 发送,参考:https://blog.csdn.net/shan1774965666/article/details/127600976
参考:gpt
以下是一个使用C#实现POST方式调用接口并返回数据的示例代码
using System;
using System.Net;
using System.IO;
using System.Text;
class Program
{
static void Main(string[] args)
{
string url = "http://example.com/api"; // 接口地址
string postData = "param1=value1¶m2=value2"; // POST数据,格式为key=value&key=value
byte[] data = Encoding.UTF8.GetBytes(postData); // 将POST数据转换为字节数组
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); // 创建请求对象
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length); // 将POST数据写入请求流
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // 发送请求并获取响应
string responseData = string.Empty;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
responseData = reader.ReadToEnd(); // 读取响应流中的数据
}
Console.WriteLine(responseData); // 输出响应数据
}
}
需要注意的是,这里假设接口返回的数据是UTF-8编码的。如果接口返回的数据采用其他编码方式,需要相应地修改代码。此外,如果接口需要进行身份验证等操作,也需要在请求中添加相应的头部信息或参数。
基于bing、GPT部分内容和本人思考总结:
以下是使用C#实现HTTP协议接收数据的示例程序:
csharp
Copy code
using System;
using System.IO;
using System.Net;
using System.Text;
namespace HttpServer
{
class Program
{
static void Main(string[] args)
{
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8080/"); // 设定监听地址
listener.Start(); // 开始监听
Console.WriteLine("Listening...");
while (true)
{
HttpListenerContext context = listener.GetContext(); // 接收请求
HttpListenerRequest request = context.Request;
Console.WriteLine("Request URL: " + request.Url.ToString());
// 读取请求内容
Stream inputStream = request.InputStream;
StreamReader sr = new StreamReader(inputStream, Encoding.UTF8);
string requestContent = sr.ReadToEnd();
// 处理请求
string responseContent = "Hello, World!"; // 这里设置响应内容
// 发送响应
HttpListenerResponse response = context.Response;
response.StatusCode = 200;
response.ContentType = "text/plain";
byte[] buffer = Encoding.UTF8.GetBytes(responseContent);
response.ContentLength64 = buffer.Length;
response.OutputStream.Write(buffer, 0, buffer.Length);
response.OutputStream.Close();
}
}
}
}
这个示例程序使用HttpListener类来实现HTTP协议的接口接收。程序先创建了一个HttpListener对象,并添加了一个监听地址,然后通过调用Start方法开始监听。在程序的主循环中,程序调用GetContext方法来接收请求,并读取请求内容。然后根据请求内容进行处理,并设置响应内容,最后通过HttpListenerResponse对象的OutputStream属性发送响应。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
以下是用C#实现http协议接口接收预警消息的demo程序的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
PostData();
}
static async void PostData()
{
using (var client = new HttpClient())
{
var values = new Dictionary<string, string>
{
{"param1", "value1"},
{"param2", "value2"}
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("http://101.43.218.219/DouyinTestB/1002.htm", content);
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
}
}
}
}
这是一个简单的示例,您需要根据接口的具体要求进行相应的修改。调用接口时,您需要将参数等信息替换为接口要求的内容,在该代码中将其作为字典的键值对形式传递。调用PostAsync方法发送POST请求,然后读取响应数据。最后,您可以将响应数据打印到控制台,进行调试。
如果我的回答解决了您的问题,请采纳!