public T Post <T>(IUploadRequest <T> request) where T : IWeiboResponse, new() { var url = new StringBuilder(request.Url); if (request.WeiboType == WeiboType.Sina) { url.Append(_format); } var form = new HttpMultipartMimeForm(); if (request.WeiboType == WeiboType.QQ) { form.AppendValue("format", _format.ToString()); } if (request.Parameters.Count > 0) { foreach (var parameter in request.Parameters) { form.AppendValue(parameter.Key, parameter.Value); } } if (request.FileParameters.Count > 0) { foreach (var fileParameter in request.FileParameters) { form.AppendFile(fileParameter.Key, fileParameter.Value); } } var oauthRequest = new OAuthHttpRequestMessage("POST", url.ToString(), form).Sign(_accessToken); var result = _client.Send(oauthRequest).ReadContentAsString(); var response = new T(); response.ConvertFrom(result); return(response); }