Asp classic 如何将带有参数的HTTP POST从经典ASP发送到WEB API?

Asp classic 如何将带有参数的HTTP POST从经典ASP发送到WEB API?,asp-classic,asp.net-web-api,msxml,Asp Classic,Asp.net Web Api,Msxml,我试图在同一台机器上的另一个端口上创建对WEB API的调用。它工作正常,返回字符串并命中.NET断点,但从未传递参数..(它为null)。。在传递该字符串的经典ASP代码中是否缺少某些内容?(数据发送) 我的电话号码: <% Response.Buffer = True Dim xml ' Set xml = Server.CreateObject("Microsoft.XMLHTTP") Set xml = server.Createobj

我试图在同一台机器上的另一个端口上创建对WEB API的调用。它工作正常,返回字符串并命中.NET断点,但从未传递参数..(它为null)。。在传递该字符串的经典ASP代码中是否缺少某些内容?(数据发送)

我的电话号码:

  <%
      Response.Buffer = True
      Dim xml
     ' Set xml = Server.CreateObject("Microsoft.XMLHTTP")
    Set xml = server.Createobject("MSXML2.XMLHTTP")

     DataToSend="<?xml version=""1.0"" encoding=""UTF-8""?><codes sku=""123123"" num-codes=""234234"" />"

      xml.Open "POST", _
          "http://localhost:1303/api/RegistrationCode", _
          False

      xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
      xml.setRequestHeader "X-VitalSource-API-Key", "xxx"

      xml.Send DataToSend

      'Display the HTML both as HTML and as text
      Response.Write "<h1>The HTML text</h1><xmp>"
      Response.Write xml.responseText
      Response.Write "</xmp><p><hr><p><h1>The HTML Output</h1>"
      Response.Write xml.responseText
      Set xml = Nothing
%>

WEB API代码:

   public class RegistrationCodeController : ApiController
{
    string testXmlString = "<SomeValue>6</SomeValue>";



       public string Post([FromBody]string value)
    {
        return testXmlString;
    }

}
公共类注册codecontroller:ApiController
{
字符串testXmlString=“6”;
公共字符串Post([FromBody]字符串值)
{
返回testXmlString;
}
}

你可能想看看这个答案

另外,按照惯例,在使用WebAPI时,我通常会将所有内容传递给URL中的API。该方法将自动选择值。类似这样的事情可能会有所帮助:

[Route("api/some/specific/url/{someValue}/{someValue2}")]
public HttpResponseMessage Get(int someValue, int someValue2)
{
     //Do something with your request
}
您还可以从url直接将参数拉入类中

[Route("api/some/specific/url/{someValue}/{someValue2}")]
public HttpResponseMessage Get([FromURI] SomeClass someClass)
{
     //Do something with your request
}

希望这有帮助

我也遇到了这个问题。迟来的回答,但是

我有一个例子,我不能在URL中发送数据,因为它非常大,并且超过了大小限制,所以我必须使用POST,而不是GET。经过反复试验,我做到了:

在经典的ASP文件中

Public Function PostData(link, data)
    on error resume next

    if link<>"" then
        data = "{'Name': '" & data & "'}"
        data = Replace(data, "'", """")

        Dim oXMLHTTP
        Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP.3.0")
        if oXMLHTTP is nothing then Set oXMLHTTP = CreateObject("Microsoft.XMLHTTP")

        oXMLHTTP.Open "POST", link, False
        oXMLHTTP.setRequestHeader "Content-Type", "application/json"
        oXMLHTTP.send data

        If oXMLHTTP.Status = 200 Then
            PostData = oXMLHTTP.responseText
        Else
            response.Write "Status: " & oXMLHTTP.Status & " | "
            response.Write oXMLHTTP.responseText
            response.end
        End If

    end if
End Function

我不太熟悉ASP,但我发现有几个示例都使用JSON将数据发送到Web API函数,而不仅仅是字符串。因此,我创建了一个简单的DTO,然后将数据转换成JSON字符串。请记住将单引号转换为双引号。我想测试数据以确定。

谢谢Pete。在这里帮了我大忙(诅咒你遗留的ASP代码)!
public class PayLoad
{
    public string Name { get; set; }
}

[Route("api/Values/PostUnidataMethod")]
[HttpPost]
public string PostUnidataMethod([FromBody]PayLoad data)
{
    return data.Name;
}