diff --git a/lib/codegen/csharp/rest_sharp.dart b/lib/codegen/csharp/rest_sharp.dart index 4d53e685..ebf70787 100644 --- a/lib/codegen/csharp/rest_sharp.dart +++ b/lib/codegen/csharp/rest_sharp.dart @@ -40,18 +40,21 @@ class Program """; String kTemplateFormData = """ {% if type == "text" -%} - request.AddParameter("{{name}}", "{{value}}", ParameterType.RequestBody); + request.AddParameter("{{name}}", "{{value}}", ParameterType.GetOrPost); {% else -%} request.AddFile("{{name}}", "{{value}}"); {% endif -%} +"""; + String kStringFormDataOption = """ + request.AlwaysMultipartFormData = true; """; String kTemplateJsonData = """ var jsonBody = new {{jsonData}}; request.AddJsonBody(jsonBody); """; String kTemplateTextData = """ - var textBody = "{{textData}}"; - request.AddStringBody(textBody); + var textBody = {{textData}}; + request.AddStringBody(textBody, ContentType.Plain); """; String kStringEnd = """ @@ -144,6 +147,7 @@ class Program "type": data["type"] }); } + result += kStringFormDataOption; result += formDataResult.substring(0, formDataResult.length - 1); result += kStringLineBreak; } @@ -167,8 +171,8 @@ class Program if (requestModel.hasTextData) { jj.Template templateTextData = jj.Template(kTemplateTextData); - result += - templateTextData.render({"textData": requestModel.requestBody}); + result += templateTextData + .render({"textData": jsonEncode(requestModel.requestBody)}); result += kStringLineBreak; } diff --git a/test/codegen/csharp_rest_sharp_codgen_test.dart b/test/codegen/csharp_rest_sharp_codgen_test.dart index 852ef906..52fad758 100644 --- a/test/codegen/csharp_rest_sharp_codgen_test.dart +++ b/test/codegen/csharp_rest_sharp_codgen_test.dart @@ -497,10 +497,8 @@ class Program request.AddHeader("Content-Type", "text/plain"); - var textBody = "{ -"text": "I LOVE Flutter" -}"; - request.AddStringBody(textBody); + var textBody = "{\n\"text\": \"I LOVE Flutter\"\n}"; + request.AddStringBody(textBody, ContentType.Plain); var response = await client.ExecuteAsync(request); Console.WriteLine("Status Code: " + (int)response.StatusCode); @@ -614,9 +612,10 @@ class Program request.AddHeader("Content-Type", "multipart/form-data"); - request.AddParameter("text", "API", ParameterType.RequestBody); - request.AddParameter("sep", "|", ParameterType.RequestBody); - request.AddParameter("times", "3", ParameterType.RequestBody); + request.AlwaysMultipartFormData = true; + request.AddParameter("text", "API", ParameterType.GetOrPost); + request.AddParameter("sep", "|", ParameterType.GetOrPost); + request.AddParameter("times", "3", ParameterType.GetOrPost); var response = await client.ExecuteAsync(request); Console.WriteLine("Status Code: " + (int)response.StatusCode); @@ -651,9 +650,10 @@ class Program request.AddHeader("Content-Type", "multipart/form-data"); request.AddHeader("User-Agent", "Test Agent"); - request.AddParameter("text", "API", ParameterType.RequestBody); - request.AddParameter("sep", "|", ParameterType.RequestBody); - request.AddParameter("times", "3", ParameterType.RequestBody); + request.AlwaysMultipartFormData = true; + request.AddParameter("text", "API", ParameterType.GetOrPost); + request.AddParameter("sep", "|", ParameterType.GetOrPost); + request.AddParameter("times", "3", ParameterType.GetOrPost); var response = await client.ExecuteAsync(request); Console.WriteLine("Status Code: " + (int)response.StatusCode); @@ -687,7 +687,8 @@ class Program request.AddHeader("Content-Type", "multipart/form-data"); - request.AddParameter("token", "xyz", ParameterType.RequestBody); + request.AlwaysMultipartFormData = true; + request.AddParameter("token", "xyz", ParameterType.GetOrPost); request.AddFile("imfile", "/Documents/up/1.png"); var response = await client.ExecuteAsync(request); @@ -722,7 +723,8 @@ class Program request.AddHeader("Content-Type", "multipart/form-data"); - request.AddParameter("token", "xyz", ParameterType.RequestBody); + request.AlwaysMultipartFormData = true; + request.AddParameter("token", "xyz", ParameterType.GetOrPost); request.AddFile("imfile", "/Documents/up/1.png"); var response = await client.ExecuteAsync(request); @@ -760,9 +762,10 @@ class Program request.AddHeader("Content-Type", "multipart/form-data"); - request.AddParameter("text", "API", ParameterType.RequestBody); - request.AddParameter("sep", "|", ParameterType.RequestBody); - request.AddParameter("times", "3", ParameterType.RequestBody); + request.AlwaysMultipartFormData = true; + request.AddParameter("text", "API", ParameterType.GetOrPost); + request.AddParameter("sep", "|", ParameterType.GetOrPost); + request.AddParameter("times", "3", ParameterType.GetOrPost); var response = await client.ExecuteAsync(request); Console.WriteLine("Status Code: " + (int)response.StatusCode); @@ -801,7 +804,8 @@ class Program request.AddHeader("User-Agent", "Test Agent"); request.AddHeader("Keep-Alive", "true"); - request.AddParameter("token", "xyz", ParameterType.RequestBody); + request.AlwaysMultipartFormData = true; + request.AddParameter("token", "xyz", ParameterType.GetOrPost); request.AddFile("imfile", "/Documents/up/1.png"); var response = await client.ExecuteAsync(request);