@@ -39,8 +39,9 @@ public RequestContent(RestClient client, RestRequest request) {
39
39
40
40
public HttpContent BuildContent ( ) {
41
41
AddFiles ( ) ;
42
- AddBody ( ) ;
43
- AddPostParameters ( ) ;
42
+ var postParameters = _request . Parameters . GetContentParameters ( _request . Method ) ;
43
+ AddBody ( ! postParameters . IsEmpty ( ) ) ;
44
+ AddPostParameters ( postParameters ) ;
44
45
AddHeaders ( ) ;
45
46
return Content ! ;
46
47
}
@@ -95,13 +96,13 @@ static bool BodyShouldBeMultipartForm(BodyParameter bodyParameter) {
95
96
return bodyParameter . Name . IsNotEmpty ( ) && bodyParameter . Name != bodyContentType ;
96
97
}
97
98
98
- void AddBody ( ) {
99
+ void AddBody ( bool hasPostParameters ) {
99
100
if ( ! _request . TryGetBodyParameter ( out var bodyParameter ) ) return ;
100
101
101
102
var bodyContent = Serialize ( bodyParameter ! ) ;
102
103
103
104
// we need to send the body
104
- if ( _request . HasPostParameters ( ) || _request . HasFiles ( ) || BodyShouldBeMultipartForm ( bodyParameter ! ) ) {
105
+ if ( hasPostParameters || _request . HasFiles ( ) || BodyShouldBeMultipartForm ( bodyParameter ! ) ) {
105
106
// here we must use multipart form data
106
107
var mpContent = Content as MultipartFormDataContent ?? new MultipartFormDataContent ( ) ;
107
108
@@ -117,29 +118,20 @@ void AddBody() {
117
118
}
118
119
}
119
120
120
- void AddPostParameters ( ) {
121
- var postParameters = _request . GetPostParameters ( ) ;
122
- if ( postParameters . Length <= 0 ) return ;
123
-
124
- // it's a form
125
- if ( Content is MultipartFormDataContent mpContent ) {
126
- // we got the multipart form already instantiated, just add parameters to it
127
- foreach ( var postParameter in postParameters ) {
128
- mpContent . Add (
129
- new StringContent ( postParameter . Value ! . ToString ( ) ! , _client . Options . Encoding , postParameter . ContentType ) ,
130
- postParameter . Name !
131
- ) ;
132
- }
133
- }
134
- else {
135
- // we should not have anything else except the parameters, so we send them as form URL encoded
136
- var formContent = new FormUrlEncodedContent (
137
- _request . Parameters
138
- . Where ( x => x . Type == ParameterType . GetOrPost )
139
- . Select ( x => new KeyValuePair < string , string > ( x . Name ! , x . Value ! . ToString ( ) ! ) ) !
121
+ void AddPostParameters ( ParametersCollection ? postParameters ) {
122
+ if ( postParameters . IsEmpty ( ) ) return ;
123
+
124
+ var mpContent = Content as MultipartFormDataContent ?? new MultipartFormDataContent ( ) ;
125
+
126
+ // we got the multipart form already instantiated, just add parameters to it
127
+ foreach ( var postParameter in postParameters ! ) {
128
+ mpContent . Add (
129
+ new StringContent ( postParameter . Value ! . ToString ( ) ! , _client . Options . Encoding , postParameter . ContentType ) ,
130
+ postParameter . Name !
140
131
) ;
141
- Content = formContent ;
142
132
}
133
+
134
+ Content = mpContent ;
143
135
}
144
136
145
137
void AddHeaders ( ) {
0 commit comments