2017-07-18 147 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