C# - REST POST API - 错误 - 无效的 URI:Uri 字符串太长

Posted

技术标签:

【中文标题】C# - REST POST API - 错误 - 无效的 URI:Uri 字符串太长【英文标题】:C# - REST POST API - Error - Invalid URI: The Uri string is too long 【发布时间】:2021-10-26 12:33:19 【问题描述】:

我正在尝试在 POST API 中发送数据并尝试使用邮递员生成的代码。但行“request.AlwaysMultipartFormData = true;”给出错误“RestRequest 不包含 AlwaysMultipartFormData 的定义”。如果我删除该行,那么我将面临错误“无效的 URI:Uri 字符串太长。”

var client = new RestClient("http://localhost:4000/xxx.php");
client.Timeout = -1;   
var request = new RestRequest(Method.POST);
**request.AlwaysMultipartFormData = true;** // had to remove
request.AddParameter("htmlstring", htmlstring);
IRestResponse response = client.Execute(request);
var base64 = response.Content;
return base64;
        

【问题讨论】:

我认为我们缺少一些代码来获取错误。我们需要知道是否有任何参数传入(导致错误的假数据就足够了)。另外,请考虑错误可能来自 PHP 端。 谢谢。但不同的是我不能在邮递员的c#中添加“request.AlwaysMultipartFormData = true;”。如果我添加该行,则会给出“RestRequest 不包含 AlwaysMultipartFormData 的定义”错误 传输的数据是带有base64图像的html字符串 这是一个构建错误,告诉你 RestRequest 上没有这样的属性。从另一个答案看来,调用 AddFile 将始终为您设置:***.com/a/45382624/2048017 您能否使用更多代码更新问题,以便我们知道您是如何形成请求的?一切都归结为client.Execute 【参考方案1】:

用答案格式来回顾我们通过 cmets 进行的讨论,因为 Web 服务器告诉您请求太长,您可以通过 POST 正文发送相同的数据。我还根据个人喜好稍微更改了代码。

var client = new RestClient("http://localhost:4000/");
client.Timeout = -1;

var request = new RestRequest("xxx.php", Method.POST);
request.AddParameter("htmlstring", htmlstring, ParameterType.GetOrPost);

var response = client.Execute(request);
var base64 = response.Content;
return base64;

然后在 PHP 中你可以使用:

$htmlstring = $_POST["htmlstring"];

【讨论】:

以上是关于C# - REST POST API - 错误 - 无效的 URI:Uri 字符串太长的主要内容,如果未能解决你的问题,请参考以下文章

在自托管 Web 服务器环境中通过 POST REST API 上传 C# 文件

REST API:使用 C# 结合登录信息和 API 操作?

在 django rest api 中使用 POST 解析 Json 错误

使用 C# 的 Google 语音识别 REST API 的错误请求错误

C# REST API - 如何使用错误代码扩展模型状态错误

500内部服务器错误;在spring Boot rest api中使用POST方法时