Asp.net web api 使用经典ASP.NET中的post参数调用ASP.NET WEB API方法

Asp.net web api 使用经典ASP.NET中的post参数调用ASP.NET WEB API方法,asp.net-web-api,Asp.net Web Api,如何通过以xml格式发送post数据和recevie数据从经典ASP调用ASP.NET WEBAPI方法 下面是为此实现编写的代码: public HttpResponseMessage Post([FromBody] string data) { var rspdata= data; return new HttpResponseMessage { Content = new StringContent(

如何通过以xml格式发送post数据和recevie数据从经典ASP调用ASP.NET WEBAPI方法

下面是为此实现编写的代码:

    public HttpResponseMessage Post([FromBody] string data)
    {
        var rspdata= data;

        return new HttpResponseMessage
        {
            Content = new StringContent(rspdata, Encoding.UTF8, "application/xml")
        };
    }

    Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
    HttpReq.open "post", "api/conenter code heretrollername", False
    HttpReq.send data="hello"

请帮帮我,这不是预期的wokring。

我不知道如何从classic asp发出web请求。据我所知,问题在于无论何时提出请求,都需要使用适当的头。除非您更改asp.net web api的模型绑定器,否则它将只接受post方法的application/xml或application/json。发布xml或JSON后,它将尝试反序列化到您在WebAPI端定义的模型。在这种情况下,您必须创建一个新的RequestDTO并修改您的方法,如下所示:

public class RequestDTO{

    public string Data {get; set;}

}

[HttpPost]
public HttpResponseMessage Post([FromBody] RequestDTO reqObj)
{
    var rspdata= reqObj.Data;

    return new HttpResponseMessage
    {
        Content = new StringContent(rspdata, Encoding.UTF8, "application/xml")
    };
} 
为了从ASP端执行此方法,需要将post数据序列化为JSON或XML。我在下面给出JSON:

{ "data" : "test" }
最后但并非最不重要的一点是,您应该设置
内容类型:application/json
Accept:application/xml
(仅当您需要xml作为Web API端的响应时)


希望这能有所帮助。

您好,我试图使用fiddler执行上述方法,但RequestDTO始终为空。我正在使用fiddler执行上述方法。设置标题了吗?您的请求头肯定有问题。否,我正在将头设置为application/x-www-form-urlencoded。即使数据为空,我也使用fiddler诊断问题用户代理:fiddler用户代理:fiddler Accept:application/json内容类型:application/json主机:localhost:2371内容长度:9{“data”:“4”}现在我可以在controller方法中看到发布的数据,现在我尝试使用相同的格式来返回xml格式,而不是json用户代理:Fiddler Accept:application/xml Content type:application/xml Host:localhost:2371 Content Length:11 data=4这段代码不起作用。请帮帮我