将json响应转储到文件

时间:2016-07-20 10:30:45

标签: c#

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

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

2 个答案:

答案 0 :(得分:1)

您可以定义自定义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());

答案 1 :(得分:1)

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

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