C# Web 请求在 SSE 上超时

问题描述 投票:0回答:1

我检查了this问题,但我每次都会得到答复,这也不是关闭套接字问题this问题。 我正在尝试从 SSE 端点进行流式传输,并发现此博客很有帮助,但我必须修改它以添加所需的标头。

curl -v  http://<ip>:<port>/api/v3/ble/stream/packets -H "apikey: <key>"

工作正常,我得到了流数据。 Postman 得到了 200,但没有 SSE 数据。

我的 C# 代码在响应之前超时。

                var request = new HttpRequestMessage(HttpMethod.Get, new Uri($"{APIGW_URL}/{streamingEndpoint}"));
                request.Headers.Add("apikey",APIKEY);
                request.Headers.Add("Accept", "*/*");

                logger.LogInformation("Sending request {method} to {url}:",request.Method, request.RequestUri);

                HttpResponseMessage response = await client.SendAsync(request);
                logger.LogInformation("Rescieved response with status code {statusCode} and headers :");

我可以用fiddler拦截并查看响应:

HTTP/1.1 200 OK
Content-Type: application/json
Grpc-Metadata-Content-Type: application/grpc
Date: Thu, 12 Oct 2023 16:43:00 GMT
Transfer-Encoding: chunked

我尝试将

await
更改为
.Result
.getAwaiter().getResult();
,但没有任何变化。我尝试过不同的标头,但我认为这没有帮助,因为正在返回 200,我只是没有看到它。

c# dotnet-httpclient server-sent-events
1个回答
0
投票

我通过向客户端添加 BaseAddress(填充主机标头)解决了这个问题。我不清楚为什么这对上交所有影响,但对常规交易却没有影响。 如果有人能解释这一点,我会给你答案。

client.BaseAddress = new Uri(APIGW_URL);
© www.soinside.com 2019 - 2024. All rights reserved.