Request Content

HttpBuildR provides a set of methods to modify the content of an HttpRequestMessage object in a fluent manner.

WithContent Method

The WithContent method modifies the request content.

Usage:


HttpRequestMessage request = new HttpRequestMessage();
request = request.WithContent(new StringContent("content"));
string result = await request.Content!.ReadAsStringAsync(
    TestContext.Current.CancellationToken
);

Assert.Equal("content", result);
Assert.Equal("text/plain; charset=utf-8", request.Content.Headers.ContentType!.ToString());

WithJsonContent Method

The WithJsonContent method modifies the request content with JSON StringContent.

Usage:


HttpRequestMessage request = new HttpRequestMessage();
request = request.WithJsonContent(new { Name = "Ben", Age = "Unknown" });
string result = await request.Content!.ReadAsStringAsync(
    TestContext.Current.CancellationToken
);

Assert.Equal("{\"Name\":\"Ben\",\"Age\":\"Unknown\"}", result);
Assert.Equal(
    "application/json; charset=utf-8",
    request.Content.Headers.ContentType!.ToString()
);

WithXmlContent Method

The WithXmlContent method modifies the request content with XML StringContent.

Usage:


[XmlRoot("Widget")]
public class Widget
{
    public required string Name { get; set; }
    public int PartNumber { get; set; }
}

[Fact]
public async Task TestWithXmlContentMethod()
{
    HttpRequestMessage request = new HttpRequestMessage();
    request = request.WithXmlContent(new Widget { Name = "Doohickey", PartNumber = 10 });
    string result = await request.Content!.ReadAsStringAsync(
        TestContext.Current.CancellationToken
    );

    Assert.Equal(
        "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
            + "<Widget xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
            + "<Name>Doohickey</Name>"
            + "<PartNumber>10</PartNumber>"
            + "</Widget>",
        result
    );
    Assert.Equal("text/xml; charset=utf-8", request.Content.Headers.ContentType!.ToString());
}

WithTextContent Method

The WithTextContent method modifies the request content with text StringContent.

Usage:


HttpRequestMessage request = new HttpRequestMessage();
request = request.WithTextContent("content");
string result = await request.Content!.ReadAsStringAsync(
    TestContext.Current.CancellationToken
);

Assert.Equal("content", result);
Assert.Equal("text/plain; charset=utf-8", request.Content.Headers.ContentType!.ToString());

WithFormUrlContent Method

The WithFormUrlContent method modifies the request content with FormUrlEncodedContent.

Usage:


HttpRequestMessage request = new HttpRequestMessage();
request = request.WithFormUrlContent(new KeyValuePair<string, string>("key", "value"));
string result = await request.Content!.ReadAsStringAsync(
    TestContext.Current.CancellationToken
);

Assert.Equal("key=value", result);
Assert.Equal(
    "application/x-www-form-urlencoded",
    request.Content.Headers.ContentType!.ToString()
);