进行get请求时出现多个问号

Multiple Question Marks appear when making a get request

我在实习期间正在编写一个 Telegram Bot 作为一个项目。它旨在帮助客户轻松查看有关其公司销售的报告并向他们发送消息通知(使用 Webhook)。

对于大多数报告,我向我编写的 API 发出请求,生成并 returns 它们作为字节 array/JSON 对象。预期的结果是一个字节数组,大多数都是这种情况。 但是,其中一份报告 returns 是 404,并且在 Uri 中包含多个问号,我没有添加。 https://url/?EpumpReport?/Company?/CompanyVarianceReport

预期的行为是 200 OK,以及 pdf 内容。

我尝试在 class 中初始化 HttpClient,而不是在 Startup 中注册它。 我还尝试通过创建 HttpRequestMessage 并发送它来以不同的方式发送请求。 都无济于事。

我写了这个函数来减少混乱: GetReportWithSummaryDataAsync(message, Uri, _userData)。 message 参数包含标识用户的 ChatId 和标识消息的 messageId。

            _client.DefaultRequestHeaders.Add("Authorization", $"Bearer {userData.AuthKey}");

            var requestMessage = new HttpRequestMessage(HttpMethod.Get, uri);

            var response = await _client.SendAsync(requestMessage).ConfigureAwait(false);
            var content = await response.Content.ReadAsStreamAsync();
            var result = await JsonSerializer.DeserializeAsync<SummaryData>(content);

            // Todo add check for NullReferenceException
            _pdfReport = new MemoryStream(result.pdfReport);
            return result;

这是函数本身。之后,我将结果的内容发送给用户。

主要问题是 Uri 自行更改。 假设我向 https://google.com/example 发送请求,当请求即将 be/being 发送时,Uri 变为 https://?google.com?/example? 而且,我不知道为什么。

原来我的 URI 字符串中存在隐藏字符。公司的一位前端开发人员提到了他们在类似问题上的经验;然后,我使用 this tool 从字符串中查找并删除字符。它现在可以正常工作了。