2017-10-24 7 views
0

JERSEYとionic 3プロジェクトをフロントエンドに使用するJavaバックエンドプロジェクトがあります。 getメソッドは正常に動作しますが、私はpostメソッドを動作させることができません。エラー415サポートされていないメディアタイプionic 3プロジェクトからJava Webサービスへhttp.postを投稿しようとしています

これはpostメソッド私は2つの方法で私のイオンのプロジェクトで私のポスト機能を行うことを試みた>

 @POST 
     @Consumes(MediaType.APPLICATION_JSON) 
     @Path("/") 
     public Response create(Oferta oferta) throws SQLException,         ClassNotFoundException{ 
    ofertaDAO dao = new ofertaDAO(); 
    dao.insert(oferta); 
    return Response 
     .status(200) 
     .header("Access-Control-Allow-Origin", "*") 
     .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization") 
     .header("Access-Control-Allow-Credentials", "true") 
     .header("Access-Control-Allow-Methods", "GET, POST, PUT,  DELETE, OPTIONS, HEAD") 
     .header("Access-Control-Max-Age", "1209600") 
     .entity(oferta) 
     .build(); 

} 

、このです:

postData(params){ 
    let headers = new Headers(); 
    headers.append('Content-type','application/json'); 
    return this.http.post(this.api,params,{ 
    headers: headers 
    }).map(
    (res:Response) => {return res.json();} 
    ); 

     } 

そして、このよう>

  postData(params){   
      let headers = new Headers({'Content-type' : 'application/x-www-form-urlencoded'}); 
      return this.http.post(this.api,params,{ 
      headers: headers, 
      method: 'POST' 
      }).map(
      (res:Response) => {return res.json();} 
     ); 

      } 

最初の方法では、http 400エラーが発生し、2番目の方法では415エラーが発生します。ここで何が恋しい?

答えて

1

サーバーでapplication/jsonが必要で、コンテンツタイプをapplication/x-www-form-urlencodedに設定するため、415エラーが発生します。

送信しているデータが有効でないため、400が返されます。サーバーは特定のJSON構造と値を想定していて、別のものを送信しています。あなたは、何が間違っているかを応答にエラーメッセージがあるはずです。あなたが送信しているものを確認し、Ofertaの構造が何であるかを確認してください。

コンテンツタイプヘッダーをapplication/jsonに設定すると、オブジェクトをポストするときにAngularがそれを行うので、役に立たないことに注意してください。

+0

あなたは正しかったです、nertModelの名前をtheertertプロパティと同じに設定しなければなりませんでした。タイ –

関連する問題