gpt4 book ai didi

c# - ASP.NET MVC 网络 API : application/xml PUT request body is null on server side

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:07:31 30 4
gpt4 key购买 nike

我正在尝试将一些 XML 内容手动发送到我创建的 ASP MVC Web Api 服务器。 Controller.Put() 方法如下所示:

public Game Put(int id, [FromBody] HttpAction[] actions)
{
Debug.WriteLine(actions[0].TargetId + ", " + actions[0].Type + ", " + actions[0].ContentType + ", " + actions[0].Contents);
Game game = this.provider.Update(id, actions);
return game;
}

空引用在检查操作对象的参数时立即发生。此方法接收一个对象 ID 和一个 HttpAction 类型的数组,如下所示:

[DataContract]
public class HttpAction
{
[DataMember]
public int TargetId { get; set; }
[DataMember]
public HttpActionType Type { get; set; }
[DataMember]
public HttpActionContentType ContentType { get; set; }
[DataMember]
public string Contents { get; set; }
}

我已经像这样设置了我的 PUT 请求:

标题

  • 内容类型:application/xml
  • 接受:*/*
  • 接受编码:gzip、deflate、sdch
  • 接受语言:en-GB,en-US;q=0.8,en;q=0.6

(以上大部分是由我用来发送请求的 Advanced Rest Client 生成的)

正文

<?xml version="1.0" encoding="utf-8"?>
<HttpActions>
<HttpAction>
<TargetId>0</TargetId>
<Type>Add</Type>
<ContentType>Player</ContentType>
<Contents>UnityPlayer</Contents>
</HttpAction>
</HttpActions>

body 的另一种尝试:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfHttpAction xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<HttpAction>
<TargetId xmlns="http://schemas.datacontract.org/2004/07/GOHCGLibrary.Actions">0</TargetId>
<Type xmlns="http://schemas.datacontract.org/2004/07/GOHCGLibrary.Actions">Add</Type>
<ContentType xmlns="http://schemas.datacontract.org/2004/07/GOHCGLibrary.Actions">Player</ContentType>
<Contents xmlns="http://schemas.datacontract.org/2004/07/GOHCGLibrary.Actions">UnityPlayer</Contents>
</HttpAction>
</ArrayOfHttpAction>

每当我发送这个请求时,我发现请求的主体在 Controller 中是空的。我在使用 JSON 正文时设法对其进行了测试并且它工作正常,我还在我的 Controller 上进行了单元测试,该单元测试传入 HttpAction 数组以检查所有后台代码是否正常工作。

在为请求构建 XML 时我做错了什么?我读过我需要包括 xmlns 和 xmlns:i 但我不确定它们的用途或设置它们的目的。我尝试了各种选择但没有成功。

最佳答案

把你的方法改成这个

public Game Put(HttpAction[] actions)
{
}

对于单件商品,您应该试试这个 request body .

<HttpAction xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebApiSample.Models">
<ContentType>sample string 3</ContentType>
<Contents>sample string 4</Contents>
<TargetId>1</TargetId>
<Type>sample string 2</Type>
</HttpAction>

试试这个内容类型

Content-Type: application/xml

对于 HttpAction 列表,您应该尝试以下类型的 request body

<ArrayOfHttpAction xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebApiSample.Models">
<HttpAction>
<ContentType>sample string 3</ContentType>
<Contents>sample string 4</Contents>
<TargetId>1</TargetId>
<Type>sample string 2</Type>
</HttpAction>
<HttpAction>
<ContentType>sample string 3</ContentType>
<Contents>sample string 4</Contents>
<TargetId>1</TargetId>
<Type>sample string 2</Type>
</HttpAction>
</ArrayOfHttpAction>

Note: Don't use <?xml version="1.0" encoding="utf-8"?> in you request body

关于c# - ASP.NET MVC 网络 API : application/xml PUT request body is null on server side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037488/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com