You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:51:02