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 的错误请求错误