private static void ConfigureRESTfulApi(RestMethodInfo methodInfo, HttpClientRequest client) { //add headers if (methodInfo.Headers.Count > 0) { foreach (var keyValuePair in methodInfo.Headers) { client.Request.Headers.Add(keyValuePair.Key, keyValuePair.Value); } } if (methodInfo.HeaderParameterMap.Count > 0) { foreach (var keyValuePair in methodInfo.HeaderParameterMap) { client.Request.Headers.Add(keyValuePair.Key, keyValuePair.Value); } } HttpAction httpAction = (HttpAction)Enum.Parse(typeof(HttpAction), methodInfo.Method.ToString()); client.SetMethod(httpAction); switch (httpAction) { case HttpAction.Delete: break; case HttpAction.Get: break; case HttpAction.Patch: case HttpAction.Post: case HttpAction.Put: MultipartFormDataContent multipartFormDataContent = new MultipartFormDataContent(); FormUrlEncodedContent formUrlEncodedContent = null; ByteArrayContent byteArrayContent = null; if (methodInfo.IsMultipart && methodInfo.GotPart && methodInfo.Part != null) { //multipart bytes byteArrayContent = new ByteArrayContent(methodInfo.Part.GetBinaryData(), methodInfo.Part.Mimetype); } if (methodInfo.FieldParameterMap.Count > 0) { //field var fields = new Dictionary <string, string>(); foreach (var keyValuePair in methodInfo.FieldParameterMap) { fields.Add(keyValuePair.Key, keyValuePair.Value.ToString()); } formUrlEncodedContent = new FormUrlEncodedContent(fields); } if (byteArrayContent != null) { //multipart/form-data; boundary=*** multipartFormDataContent.Add(byteArrayContent, methodInfo.Part.Field, methodInfo.Part.FileName); if (formUrlEncodedContent != null) { foreach (var keyValuePair in methodInfo.FieldParameterMap) { StringContent stringContent = new StringContent(keyValuePair.Value.ToString()); multipartFormDataContent.Add(stringContent, keyValuePair.Key); } client.SetHttpContent(multipartFormDataContent); } } else if (formUrlEncodedContent != null) { client.SetHttpContent(formUrlEncodedContent); } break; default: throw new ArgumentOutOfRangeException(); } if (!string.IsNullOrEmpty(methodInfo.bodyString)) { //raw body application/json StringContent content = new StringContent(methodInfo.bodyString, Encoding.UTF8, "application/json"); client.SetHttpContent(content); } // client.SetProxy(new WebProxy(new Uri("http://127.0.0.1:8888"))); }