BSiLabs / HttpTracer

MIT License
172 stars 13 forks source link
http httpclient httptracer xamarin

HttpTracer

A simple http tracing library to write request and response information to your output window. Making your life easier when debugging http calls!

Channel Status
Build Build status
MyGet.org #
NuGet.org #

Platform Support

Http Tracer is a .NET Standard 2.0 library.

Platform Version
Xamarin.iOS iOS 7+
Xamarin.Android API 14+
Windows 10 UWP 10.0.16299+
.NET Core 2.0+
ASP.NET Core 2.0+
.NET 4.6.1+

Getting Started

It is really easy to start using and debugging your Http requests, just add a instance of HttpTracerHandler to your HttpClient creation and start picking up the traces in your Visual Studio console window.

using HttpTracer;
public async Task GetMyData()
{
    var tracer = new HttpTracerHandler
    {
        Verbosity = HttpMessageParts.All
    };
    var client = new HttpClient(tracer);
    var result = await client.GetAsync("http://myserviceurl.com");
}

If you happen to use custom Http Handlers in your project, we suggest you use our Http handler builder:

using HttpTracer;
public async Task GetMyData()
{
    var builder = new HttpHandlerBuilder();

    builder.AddHandler(new MyHandler3())
           .AddHandler(new MyHandler2())
           .AddHandler(new MyHandler1());

    var tracer = builder.Build();
    tracer.Verbosity = HttpMessageParts.All;

    var client = new HttpClient(tracer);
    var result = await client.GetAsync("http://myserviceurl.com");
}

You can use bitwise operators to combine your desired HttpMessagePart options:

private const HttpMessageParts DefaultHttpTracerVerbosity =
            HttpMessageParts.RequestAll | HttpMessageParts.ResponseHeaders;

You can set the verbosity for all of your HttpTracerHandler instances by setting HttpTracerHandler.DefaultVerbosity. To set verbosity at the per-instance level, use HttpTracerHandler.Verbosity which will override HttpTracerHandler.DefaultVerbosity.

Replaying Requests

The output format for requests can be copy/pasted into a compatible rest client such as REST Client for Visual Studio Code or the REST Client which is part of JetBrains IDEs (Rider, PyCharm, Android Studio, etc).

License

Under MIT (see license file)

Want To Support This Project?

All we ask is to be active by submitting bugs, features, and sending those pull requests down!