【问题标题】:C# - REST POST API - Error - Invalid URI: The Uri string is too longC# - REST POST API - 错误 - 无效的 URI:Uri 字符串太长
【发布时间】: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 将始终为您设置:stackoverflow.com/a/45382624/2048017
  • 您能否使用更多代码更新问题,以便我们知道您是如何形成请求的?一切都归结为client.Execute

标签: c# asp.net .net rest c#-4.0


【解决方案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"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 2011-10-05
    • 2021-11-28
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多