发出获取请求时出现多个问号
Posted
技术标签:
【中文标题】发出获取请求时出现多个问号【英文标题】:Multiple Question Marks appear when making a get request 【发布时间】:2021-10-18 08:43:26 【问题描述】:我正在编写一个 Telegram Bot 作为实习项目。它旨在帮助客户轻松查看公司销售报告并向他们发送消息通知(使用 Webhook)。
对于大多数报告,我向我编写的 API 发出请求,该 API 生成并以字节数组/JSON 对象的形式返回它们。预期的结果是一个字节数组,大多数情况都是如此。
但是,其中一份报告返回 404 并在 Uri 中包含多个问号 - 我没有添加。
https://url/?EpumpReport?/Company?/CompanyVarianceReport
预期的行为是 200 OK,并且是 pdf 内容。
我尝试在类中初始化 HttpClient,而不是在 Startup.xml 中注册它。 我还尝试通过创建 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
发送请求,当请求即将发送/正在发送时,Uri 更改为https://?google.com?/example?
而且,我不知道为什么。
【问题讨论】:
这段代码哪里有问题? 在发送请求的地方。_client.SendAsync
。在终端中,请求发送到的 URI 发生变化,并带有多个问号。
那么,您正在向 Uri
参数请求 PDF 内容并将响应发送到 ChatId
?
用ChatId
向用户发送响应,是的。
见sendDocument,这可能是你要找的。span>
【参考方案1】:
原来在我的 URI 字符串中存在隐藏字符。该公司的一位前端开发人员提到了他们遇到类似问题的经历;然后,我使用this tool 从字符串中查找并删除字符。它现在可以正常工作了。
【讨论】:
以上是关于发出获取请求时出现多个问号的主要内容,如果未能解决你的问题,请参考以下文章