2017-02-07 7 views
1

私はAngular2で遊んでいます。私はJerseyを使って基本的なRESTful APIを開発しました。私はそれをテストし、うまくいきます(ブラウザとSOAPのUIで)。Angular2からジャージを呼び出す

@GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public TwoWordsMessage getMessage() { 
    TwoWordsMessage message = new TwoWordsMessage(); 
    message.setFirstWord("hello"); 
    message.setSecondWord("world"); 
    return message;   
    } 

私はAngular2アプリからサービスを呼び出すためにtryngだ:これはコードです

this.http.request(this.url).subscribe((res: Response) => { 
     this.message = res.json(); 
    }); 
私は「のgetMessage」メソッドが呼び出されること(debbuging)と、それはTwoWordsMessageを返す見ることができます

Angular2アプリケーションは決してそれを取得しません。 URLはhttp://jsonplaceholder.typicode.com/posts/1と同じコードで正常に動作します。

私は間違っていますか?

ありがとうございます!

+0

をレスポンスのように見える? –

+0

はng2サーバーのようですが、応答を待っているか、それを処理する方法がわかりません。 'code'this.message = res.json();' code' –

+0

デベロッパーコンソールをチェックしましたか?エラーはありますか?たぶんCORSエラー? –

答えて

1

コンポーネントまたはサービス内でhttpリクエストを呼び出していますか?関数またはメソッドはhttpリクエストを起動しますか?

また、応答からエラーが戻ってくるかどうか確認できますか? subscribeメソッドは、パラメータとして3つの関数をとることができます。最初は成功し、2回目はエラー、3回目は完了します。 AJAXコール(400秒、500秒など)にエラーがある場合、あなたのコードはそれを処理できません。試してみてください:

this.http.request(this.url).subscribe((res: Response) => { 
    this.message = res.json(); 
}, (error) => { 
    console.warn(error) 
}); 

と吐き出されるものを参照してください。さらにデバッグするには、あなたも観察可能で.do()メソッドを使用することができます。

this.http.request(this.url) 
    .do((res: Response) => console.log(res)) // or other stuff 
    .subscribe((res: Response) => { 
    this.message = res.json(); 
}); 

.do()方法は、実際にそれに影響を与えずに応答して、任意の関数を実行します。

もしそうでなければ、httpコールをhttp.get()に変更することもできます。私はそれが問題だとは思わないが、Angularのドキュメントでは、どのメソッドがデフォルトでhttp.request()に設定されているかについては述べていません(ただし、私はほぼ確実です)。

0

私はついにそれを働かせました。それはCORSの問題です。

コンソールがエラーを示した:

"No 'Access-Control-Allow-Origin' header is present on the requested resource"

私はこのようなリソース方法変更:あなたがここに有用な情報を見つけることができます

@GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response getMessage() { 
    TwoWordsMessage message = new TwoWordsMessage(); 
    message.setFirstWord("hello"); 
    message.setSecondWord("world"); 
    return Response.status(200).header("Access-Control-Allow-Origin", "*").entity(message).build();   
    } 

を:あなたのRESTfulな何

http://www.codingpedia.org/ama/how-to-add-cors-support-on-the-server-side-in-java-with-jersey/

関連する問題