2017-04-08 112 views
0

我想調用一個簡單的方法使用TypeScript代碼,也與Chrome高級休息客戶端,我得到404錯誤。C#WebApi POST方法和TypeScript

的WebAPI方法

[HttpPost] 
[Route("api/offert/TestPost")] 
public IHttpActionResult TestPost(int idid) 
{ 
    //http://localhost/prova/api/offert/TestPost 

    var anonymousTypeVar = new { x = 15, y = 120 }; 
    return Json(anonymousTypeVar); 
} 

打字稿代碼

var data = { idid: 1}; 

this.baseUrl = 'http://localhost/prova/api/offert/'; 
this.http.post(this.baseUrl + "TestPost", JSON.stringify(data), 
this.getRequestOptions) 
     .map(response => response.json()) 
     .subscribe(); 

在這一刻,我仍然得到404錯誤...

我知道我可以連接的網址通過「? idid = 1「作爲參數,但我想傳遞一個Json字符串到webmethod ...

我該如何去查代碼?

感謝

+1

你確定它是'http:// localhost /'而不是'http:// localhost:XXXX /'XXXX是某個端口號嗎?您是否嘗試在瀏覽器中查看該網址?任何結果? –

+0

爲什麼在那裏有'prova',那是對的嗎? –

+0

是的,我相信網址是正確的... 如果我將它從HttpPost更改爲HttpGet,我用直接url調用它:「http:// localhost/prova/api/offert/TestPost?idid = 1」我可以得到迴應 – DarioN1

回答

1

,如果你的JSON數據的問題,我不知道......我肯定會MVC URL或機身採用鍵值對高高興興地映射到一個簡單的參數,即

idid=1 -> int id 

但你會路過:

{ idid: 1 } 

需要被映射到...

public class OffertRequest 
{ 
    public int idid { get; set; } 
} 

所以,你的API是:

public IHttpActionResult TestPost(OffertRequest idid) 

Alernatively,通過在請求主體只是一個鍵/值對。

+0

好的,謝謝,您的解決方案肯定有效,但我該如何保持webapi參數原樣並將其稱爲傳遞鍵/值? – DarioN1

+0

簡單HTTP POST的格式與郵件正文中的idid = 1一樣簡單 - 因此,在使用JSON.stringify的地方,您應該只是傳遞此信息。 – Fenton