如何查看Web API发送的JSON?

时间:2017-03-13 11:27:11

标签: asp.net-web-api asp.net-web-api2

我在MVC应用程序中的一些c#代码中使用它。

var request = client.PutAsJsonAsync(path, myobj).

它工作正常 - 但我如何窥探发送到Web服务器的JSON(在路径上)?

有没有办法用调试器执行此操作 - 或者输出正在发送回MVC应用程序的JSON? THX。

2 个答案:

答案 0 :(得分:1)

你可以

  • 使用代理调试流量
  • 使用API​​测试工具
  • 修改代码以记录请求/响应

第一个选项 - 代理。看看Fiddler。它显示请求/响应数据,并允许查看https数据。正如@Balazs指出的那样,你可以和Fiddler一起撰写,捕捉,编辑和发送请求。

第二个选项--API测试工具。它们很多(SoapUI,RESTClient等),但我建议你看看Postman。它允许通过测试手动和自动触摸您的API。

最后一个选项取决于您。例如。您可以创建OWIN Middleware,它将记录请求和/或响应。

更新:好像你想在客户端而不是服务器端记录请求。因此,您可以创建自定义消息处理程序而不是OWIN Middleware:

public class LoggingHandler : HttpClientHandler
{
    private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
    protected override Task<HttpResponseMessage> SendAsync(
       HttpRequestMessage request, CancellationToken cancellationToken)
    {
        // log request or its part here
        Logger.Trace(request.ToString());
        return base.SendAsync(request, cancellationToken);
    }
}

并将其传递给HttpClient

var client = new HttpClient(new LoggingHandler());
client.DefaultRequestHeaders.Add("Accept", "application/xml");
var response = await client.GetStringAsync("http://localhost:12345/api/blah");

答案 1 :(得分:0)

创建一个扩展DelegatingHandler

的类

然后......

<xsl:value-of select="../node()"/>

....然后在Global.asax中,注册处理程序: GlobalConfiguration.Configuration.MessageHandlers.Add(New YourClassNameHandler)