【问题标题】:How to include \r\n when trying to do a Get request?尝试执行 Get 请求时如何包含 \r\n?
【发布时间】:2020-07-13 07:09:28
【问题描述】:

我尝试请求的服务器之一在字符串中有 \r\n。当您尝试通过浏览器或 Postman 等工具获取请求时,这些新行清晰可见。但是,当我尝试通过代码以编程方式获取字符串时,我看不到 \r\n.为什么会这样,或者甚至可以检索 \r\n?

public async Task<TResponse> GetAsync(string uri)
{
    var httpClient = new HttpClient();
    var content = await httpClient.GetStringAsync(uri);
    return JsonConvert.DeserializeObject<TResponse>(content);
}

响应应如下所示,其中需要保留格式:

【问题讨论】:

  • \r\n 当您通过代码实用地获取字符串但实际上将其删除时存在。但在浏览器中,它们没有被删除。或重新格式化
  • 那么responses[0].response 是什么样的?您所说的“保留”是什么意思,确切地?它们将出现在您的字符串中,但作为实际的换行符。
  • 哦,我的意思是响应中包含的 \r\n 将被保留。我得到的是在我反序列化内容后没有 \r\n 的响应的全文
  • 当我尝试打印反序列化的响应时,它实际上并没有格式化。

标签: c# get httpclient


【解决方案1】:

如果您的浏览器或邮递员让您看到“新行”,可能是因为它们让您看到格式化的 json。为确保这一点,请尝试使用 curl 或 wget 等较低级别的工具。

如果使用 curl 或 wget,您将看到没有新行的 json,而这只是格式问题。 您所要做的就是反序列化(就像您已经在做的那样)并重新序列化对象

JsonConvert.SerializeObject(deserializedObject, Formatting.Indented)

【讨论】:

  • 反序列化时如何保留\r\n?有可能吗?
  • 你做了 curl 调用吗?你能告诉我们输出吗?
  • 为需要保留格式的响应部分添加了上面的图像
  • 您使用的是什么浏览器?铬或火狐?您正在检查哪个标签?
  • 我正在使用 chrome。我正在尝试使用我的示例程序获取数据,当我推断反序列化的“响应”时,我没有得到 \r\n
【解决方案2】:

找到了一种使用HttpUtility.JavaScriptStringEncode保留回车的方法 我收到的回复。

https://docs.microsoft.com/en-us/dotnet/api/system.web.httputility.javascriptstringencode?view=netcore-3.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2017-04-14
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多