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()
);