我检查了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,我只是没有看到它。
我通过向客户端添加 BaseAddress(填充主机标头)解决了这个问题。我不清楚为什么这对上交所有影响,但对常规交易却没有影响。 如果有人能解释这一点,我会给你答案。
client.BaseAddress = new Uri(APIGW_URL);