将json响应转储到文件中

本文关键字:文件 转储 json 响应 | 更新日期: 2023-09-27 17:57:44

如何将json响应转储到文件?

基本上我不能直接访问api,所以出于调试原因,我想将响应转储到托管服务器上的一个文件中,然后下载该文件,在那里我可以使用它。

将json响应转储到文件中

要简单地转储到文件,请执行以下操作:

[... //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());