2016-12-08 14 views
1

このAPIへの私のPOSTコールで私に400が与えられました。シリアル化されたDTOオブジェクトが正しいにもかかわらず構文エラーが発生しています。要求元は、クラス内のフィールド名に対応する正しいフィールド名を使用しています。Http Bad Request - クライアントから送信されたリクエストが構文的に正しくありません

また、Apiはヒットしません。

ヘッダ、コンテンツ・タイプの場合:アプリケーション/ JSON

私のAPIは次のとおりです。requestbodyにシリアル化され

@RequestMapping(value = "/surveymonkey/webhook/receiver", method = RequestMethod.POST) 
    @ResponseBody 
    public void respondToSurveyMonkeyPOSTCall(@RequestBody NPSWebhookRequestBody npsWebhookRequestBody, HttpServletRequest request) { 


     String objectType = null; 

     String objectId =null; 

     if(npsWebhookRequestBody!=null){ 

      objectType = npsWebhookRequestBody.getObjectType(); 

      objectId = npsWebhookRequestBody.getObjectId(); 
     } 

     service.getCall(objectType,objectid 
    } 

私のDTOクラスがある:ある

package com.lk.scheduler.beans; 

import com.google.gson.annotations.SerializedName; 

public class NPSWebhookRequestBody { 

    @SerializedName("name") 
    String name; 

    @SerializedName("event_id") 
    String eventId; 

    @SerializedName("object_type") 
    String objectType; 

    @SerializedName("object_id") 
    String objectId; 

    @SerializedName("event_type") 
    String eventType; 

    @SerializedName("event_datetime") 
    String eventDatetime; 

    /** 
    * @return the name 
    */ 
    public String getName() { 
     return name; 
    } 

    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * @return the eventId 
    */ 
    public String getEventId() { 
     return eventId; 
    } 

    /** 
    * @param eventId the eventId to set 
    */ 
    public void setEventId(String eventId) { 
     this.eventId = eventId; 
    } 

    /** 
    * @return the objectType 
    */ 
    public String getObjectType() { 
     return objectType; 
    } 

    /** 
    * @param objectType the objectType to set 
    */ 
    public void setObjectType(String objectType) { 
     this.objectType = objectType; 
    } 

    /** 
    * @return the objectId 
    */ 
    public String getObjectId() { 
     return objectId; 
    } 

    /** 
    * @param objectId the objectId to set 
    */ 
    public void setObjectId(String objectId) { 
     this.objectId = objectId; 
    } 

    /** 
    * @return the eventType 
    */ 
    public String getEventType() { 
     return eventType; 
    } 

    /** 
    * @param eventType the eventType to set 
    */ 
    public void setEventType(String eventType) { 
     this.eventType = eventType; 
    } 

    /** 
    * @return the eventDatetime 
    */ 
    public String getEventDatetime() { 
     return eventDatetime; 
    } 

    /** 
    * @param eventDatetime the eventDatetime to set 
    */ 
    public void setEventDatetime(String eventDatetime) { 
     this.eventDatetime = eventDatetime; 
    } 



} 

ポストマンコール与える400:

enter image description here

P.S. :このAPIへのHttpGETおよびHttpHEAD呼び出しが機能しています。

+0

アプリケーションのログファイルはどのように表示されますか? –

+0

フォームデータとして送信しようとしましたか? –

答えて

2

私はエラーを見つけたのはずいぶん幸運でした。どうやらSpringの@RequestBody注釈は、Googleのgsonライブラリを使用したシリアル化/直列化解除では機能しません。リクエストボディが解決できなかったとして(Gsonの注釈プロパティです)

@SerializedNameは、デシリアライゼーションの時間ひいては400不正な要求で動作しません。..

我々はfasterxmlジャクソンの@JsonPropertyを使用することができます。それは正常に動作し、APIは200応答を提供しています。

関連する問題