2017-07-18 122 views
0

我正在使用Angular 2向服務器發送http請求。 服務器正在運行ASP.Net。Angular 2 HTTP post no HTTP-resource found

我的API:

public class LagerController : ApiController 
{ 
    public IHttpActionResult RepHistorie(string vnr, string lagerort) 
    { 
     ... 
    } 
} 

所以我會調用API與

http://123.456.7.89/api/lager?vnr=W17291092373&lagerort=0382691395 

使用一種稱爲郵差與至極可以測試API的工具時也能正常工作。

但是,當使用Angular 2發出發佈請求時,它不起作用。 它說沒有找到HTTP資源。

角2:

submit() { 
    var body = 'vnr=W17291092373&lagerort=0382741400'; 

    var link = 'http://123.456.7.89/api/lager'; 
    this.http.post(link, body) 
    .subscribe(data => { 
     console.log(data); 
    }, error => { 
     console.log("Oooops!"); 
    }); 
} 

好像參數不正確添加。

編輯:更改標記

+0

請使用角標籤的角度2+的問題,而不是angularjs標籤。 –

+0

它仍然是AngularJS,Angher 2或Angular 1,所以它是正確的標籤。我不知道你的不必要的評論應該如何幫助我解決問題。 @MikeFeltman – Anokrize

+0

它不是。谷歌正在做出這種區分,並且Stackoverflow也在跟風。請閱讀標籤的說明。這是StackOverflow爲使用這些標籤而設置的標準。也許如果你正確地標記你的問題,你會得到有用的答案和評論。 :) –

回答

1

這需要澄清,因爲上面的API似乎是GET請求。

如果它是一個POST請求,那麼你應該在運行API

如果使用整個URL要提交一個對象,你應該使用[FromBody]作爲參數 例

[HttpPost] 
public IHttpActionResult([FromBody]YourObject item) { 

} 

==== 客戶端

var postUrl = 'http://123.456.7.89/api/lager?vnr=W17291092373&lagerort=0382691395'; 
var postObject = {}; 
http.post(postUrl,postObject) 

對於GET請求,你想用查詢字符串

[HttpGet]  
public IHttpActionResult RepHistorie([FromQuery]string vnr,[FromQuery]string lagerort){ 
       ... 
} 

====

// Query string can be built using RequestOptionsArgs as well 
var builtUrl = 'http://123.456.7.89/api/lager?vnr=W17291092373&lagerort=0382691395'; 
http.get(builtUrl) 

另一種方法是

var getUrl = 'http://webapi/api/lager'; 
var requestOptions = {}; 
http.get(getUrl,requestOptions); 

參考:

+0

嗨,謝謝你的答案。我試過你說的一切,但它不起作用... – Anokrize

+0

那麼它是一個POST或GET請求? –

+0

這是一個POST請求 – Anokrize