2013-07-29 60 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代碼)! –

相關問題