我希望这是一个简单的问题。我之前没有使用 webapi 或 restful 服务制作公共 api。所以我注意到,在创建使用复杂对象参数的 Put 或 Post 方法时,正文中发送的 xml 需要包含命名空间信息。例如。
public HttpResponseMessage Put(Guid vendortoken, [FromBody] ActionMessage message)
{
if (message == null)
return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed,
"actionmessage must be provided in request body.");
return Request.CreateResponse(HttpStatusCode.OK);
}
为了让消息返回不为空,我的请求必须看起来像这样。
<ActionMessage
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/IntegrationModels">
<Message i:type="NewAgreement">
<AgreementGuid>3133b145-0571-477e-a87d-32f165187783</AgreementGuid>
<PaymentMethod>Cash</PaymentMethod>
</Message>
<Status>0</Status>
</ActionMessage>
这里的关键当然是 xmlns。一方面,命名空间非常通用,所以我觉得供应商提供它不应该是一个问题,另一方面他们真的需要吗?如果不是,我该如何解决这个问题,如果他们离开名称空间,消息会回来填充?
啊,要是我能让他们都使用 json 就好了 :(