C#调用REST POST API报错:URI过长及RestRequest无AlwaysMultipartFormData定义
问题1:RestRequest does not contain a definition for AlwaysMultipartFormData报错
- 根因:Postman生成的代码适配的是RestSharp v106及更早版本,v107版本后RestSharp进行了核心重构,移除了
AlwaysMultipartFormData属性,高版本调用就会触发该报错。
问题2:Invalid URI: The Uri string is too long报错
- 根因:移除上述代码行后,调用
AddParameter未指定参数类型时,RestSharp默认会将参数追加到URL的查询字符串中,当htmlstring内容过长时,就会超出URI长度限制触发报错。
修复方案
方案1:适配RestSharp v107及以上新版本(推荐)
直接指定参数放在POST请求体中传输,不会拼接至URL:
var client = new RestClient("http://localhost:4000/xxx.php"); client.Timeout = -1; var request = new RestRequest(Method.POST); // 指定参数类型为表单参数,走请求体传输 request.AddParameter("htmlstring", htmlstring, ParameterType.GetOrPost); IRestResponse response = client.Execute(request); var base64 = response.Content; return base64;
如果服务端要求必须使用multipart/form-data格式提交,可按如下写法声明参数:
request.AddParameter(new MultipartFormDataParameter("htmlstring", htmlstring, "text/plain"));
方案2:适配RestSharp v106及更早旧版本
保留原有属性即可,无需修改其他逻辑:
var client = new RestClient("http://localhost:4000/xxx.php"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AlwaysMultipartFormData = true; request.AddParameter("htmlstring", htmlstring); IRestResponse response = client.Execute(request); var base64 = response.Content; return base64;
内容的提问来源于stack exchange,提问作者Sumithra
相关产品推荐
相关产品推荐

