【问题标题】:How to pass Xml file using RestClient in Post - C#?如何在 Post - C# 中使用 RestClient 传递 Xml 文件?
【发布时间】:2021-05-09 07:24:31
【问题描述】:

我正在尝试使用 RestSharp 将 xml 文件传递​​给 api,但我在 Post 方法中接收到的文件为 null。

这是我的代码:

 public void SendXmlToApi()
    {
        var client = new RestClient(_uri);
        var request = new RestRequest(Method.POST);
        request.AddFile("Xml",XmlPath);
        request.RequestFormat = DataFormat.Xml;
        request.AddHeader("content-type", "application/xml");
        var response = client.Execute(request);
        bool res = (response.StatusCode == HttpStatusCode.OK);
    }

还有我的帖子功能:

   [HttpPost]
    [Route("Test")]
    public void UpdateResult(XDocument a)
    {

        
    }

知道有什么问题吗?

【问题讨论】:

  • 您是否尝试在您的XDocument a 之前添加[FromBody]
  • 是的,没有帮助:(

标签: c# api post restsharp rest-client


【解决方案1】:

我不使用 XML,因此这与您的示例略有不同,但将 XML 发布到 [HttpPost] API 端点是一个可行的选择。我使用了您的 SendXmlToApi() 示例,原样(仅提供了我自己的 _uriXmpPath 变量)并且成功(Core 3.1)。

我将您的接收代码修改为:

[HttpPost]
[Route("test")]
public async Task UpdateResult()
{
    string body = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();
    XDocument xdoc = XDocument.Parse(body);
}

当然,您需要为此设置防护栏并进行适当的错误处理和验证,但这应该可以帮助您克服困难。

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2013-08-04
    相关资源
    最近更新 更多