postman-code-generators
postman-code-generators copied to clipboard
Add in C# HttpClient code generation
Fixes #452
This PR adds a C# code gen that does not rely on any 3rd party libraries. The core item it uses is HttpClient
for making the call.
Some examples of it's code gen are below:
GET Request with headers:
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://postman-echo.com/headers");
request.Headers.Add("my-sample-header", "Lorem ipsum dolor sit amet");
request.Headers.Add("TEST", "@#$%^&*()");
request.Headers.Add("more", ",./';[]}{\":?><|\\\\");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Simple GET
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://postman-echo.com/get?test=123&anotherone=232");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Plaintext POST
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://postman-echo.com/post");
var content = new StringContent("Duis posuere augue vel cursus pharetra. In luctus a ex nec pretium. Praesent neque quam, tincidunt nec leo eget, rutrum vehicula magna.\nMaecenas consequat elementum elit, id semper sem tristique et. Integer pulvinar enim quis consectetur interdum volutpat. !@#$%^&*()_+-=,.<>/?", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
JSON POST
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://postman-echo.com/post");
var content = new StringContent("{\n \"json\": \"Test-Test\"\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Url Encoded POST
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://postman-echo.com/post");
var collection = new List<KeyValuePair<string, string>>();
collection.Add(new("1", "'a'"));
collection.Add(new("2", "\"b\""));
collection.Add(new("'3'", "c"));
collection.Add(new("\"4\"", "d"));
collection.Add(new("Special", "!@#$%*()^_=`&~ "));
collection.Add(new("more", ",./';[]}{\":?><|\\\\ "));
collection.Add(new("non-ascii", "테스트"));
var content = new FormUrlEncodedContent(collection);
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Form with files
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://postman-echo.com/post");
var content = new MultipartFormDataContent();
content.Add(new StreamContent(File.OpenRead("./dummyFile1.txt")), "single file", "./dummyFile1.txt");
content.Add(new StreamContent(File.OpenRead("./dummyFile2.txt")), "multiple files", "./dummyFile2.txt");
content.Add(new StreamContent(File.OpenRead("./dummyFile3.txt")), "multiple files", "./dummyFile3.txt");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());