2013-07-29 57 views
2

我正尝试在另一个端口上的同一台机器上创建对WEB API的调用。它工作正常,并发回字符串和命中.NET断点,但参数永远不会被传递..(它为空)..是否有遗漏的经典ASP代码中传递该字符串? (DataToSend)如何使用参数将传统ASP中的HTTP POST发送到WEB API?

我的调用代码:

<% 
     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; 
    } 

} 

回答

0

你可能想看看这个答案的SO。

Calling REST web services from a classic asp page

而且,与约定去,使用的WebAPI的时候我一般通过一切在URL中的API。该方法将自动选取值。像这样的东西可能会有所帮助:

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

你也可以拉在PARAMS直接进入一个类从URL

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

希望这有助于!

3

我也遇到了这个问题。迟到的答案,但...

我有一个情况,我无法发送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 

在我的WebAPI功能:

public class PayLoad 
{ 
    public string Name { get; set; } 
} 

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

我不是很熟悉ASP,但我发现几个例子都使用JSON将数据发送到Web API函数,而不仅仅是一个字符串。所以我创建了一个简单的DTO,然后将这些数据转换成JSON字符串。请记住将单引号转换为双引号。我喜欢JSONLint来测试数据以确保。

+1

谢谢皮特。在这里大量帮助我(诅咒你遗留的ASP代码)! –

相关问题