方式1 WebClient
private void WebClientTest()
{
WebClient web = new WebClient();
web.OpenReadCompleted += Web_OpenReadCompleted;
web.OpenReadAsync(new Uri("http://localhost:30009/api/event/get"));
}
private void Web_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
using (var sr = new StreamReader(e.Result))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
方式2 HttpClient
private async void Test3()
{
string url = "http://localhost:30009/api/event/get";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/event-stream"));
using (HttpResponseMessage response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead))
{
response.EnsureSuccessStatusCode();
using (Stream stream = await response.Content.ReadAsStreamAsync())
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
while (!reader.EndOfStream)
{
string line = await reader.ReadLineAsync();
if (!string.IsNullOrWhiteSpace(line))
{
Console.WriteLine($"收到数据: {line}");
//try
//{
// var jsonData = JObject.Parse(line);
// if (jsonData["data"] != null)
// {
// Console.WriteLine($"解析内容: {jsonData["data"]}");
// }
//}
//catch (Exception ex)
//{
// Console.WriteLine($"JSON 解析错误: {ex.Message}");
//}
}
}
}
}
}
}
方式2 Post请求的SSE
public async void Test1()
{
var reaquest = new ChatResquest();
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:30009/api/postsse/sseendpoint")
{
Content = new StringContent(JsonConvert.SerializeObject(reaquest, Formatting.Indented), Encoding.UTF8, "application/json") // SSE一般不用请求体,但POST方法需要一个Content
};
var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
var stream = await response.Content.ReadAsStreamAsync();
using (var reader = new System.IO.StreamReader(stream))
{
while (!reader.EndOfStream)
{
var line = await reader.ReadLineAsync();
if (!string.IsNullOrWhiteSpace(line))
{
Console.WriteLine($"Received: {line}");
}
}
}
}