将json响应转储到文件中
本文关键字:文件 转储 json 响应 | 更新日期: 2023-09-27 17:57:44
如何将json响应转储到文件?
基本上我不能直接访问api,所以出于调试原因,我想将响应转储到托管服务器上的一个文件中,然后下载该文件,在那里我可以使用它。
要简单地转储到文件,请执行以下操作:
[... //Do your WebRequest...]
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
//Here you got the JSON as string:
var result = streamReader.ReadToEnd()
// Write the text to a new file named "Response.json".
File.WriteAllText(@"C:'temp'Response.json", result );
return result;
}
注意每次收到响应时,这将覆盖您的文件。为了防止这种情况,您可以在fileName中添加时间戳。
//This will (atleast every second) create a unique filename
string filePath = $@"C:'temp'Response{DateTime.Now.ToString("ddMMyyyyHHmmss")}";
编辑:
为了确保您的文件被传输到bin'Debug
文件夹,您可以使用以下方法:
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Response{DateTime.Now.ToString("ddMMyyyyHHmmss")}");
您可以定义自定义DelegatingHandler
:
public class LogResponseHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken);
var responseString = await response.Content.ReadAsStringAsync();
//log response string to file
return response;
}
}
在HttpConfiguration
中注册
config.MessageHandlers.Add(new LogResponseHandler());