4

POSTセットアップ用のヘッダー メインのPOSTセットアップ

私はここで少し立ち往生しています。FirefoxのポスターからXMLの小さなスニペットをPOSTしようとしています。

 <IntellexEvent>
 <RuleName>a rule name</RuleName>
 </IntellexEvent>

簡単ですが、今の私のクラスIntellexEvent

@XmlRootElement(name = "IntellexEvent")
public class IntellexEvent {    
 // @XmlElement(name = "RuleName")
    private String RuleName;
    public String getRuleName()
    {
        return RuleName;
    }

    public void setRuleName(String RuleName)
    {
         this.RuleName = RuleName;
    }

}

私のコントローラーは...

@Controller

@RequestMapping("/cace/**")
public class CaceController 
{
    @Autowired
    IUserService userService;

    public CaceController()
    {

    }

@RequestMapping(value = "/cace/postXML", method = RequestMethod.POST)
    public Result postXML(@RequestBody String intellexEvent) throws Exception
    {   
        String temp = intellexEvent;

        Result result = new Result();
        result.setStatusCode(200);
        result.setSuccess(true);
            return result;
    }

}

--編集済み-つまり、@RequestBodyを文字列として使用します。私が望んでいたのは、それが自動的にIntellexEventにマーシャリングされることでした。文字列としてPOSTでバックエンドをヒットでき、文字列をIntellexEventに変更すると、415エラーが発生します。

バックエンドをヒットできるようにしたいだけです。GETを試しましたが、うまくヒットしました(ここではコントローラーに含めませんでした)。ここで何が欠けていますか?spring-mvc-servlet.xmlで、jaxb2マーシャラーを定義しました。さらに詳しい情報が必要な場合は、事前に質問してください。

4

1 に答える 1

1

Content-Typeヘッダーが欠落している可能性がありますapplication/xml。これは、Spring-MVC が xml を投稿していることを認識するためのものです。さらに、応答が xml であると予想される場合は、postXML メソッドに で注釈を付け@ResponseBodyAcceptヘッダーをapplication/xml.

postXML は次のようになります。

@RequestMapping(value = "/cace/postXML", method = RequestMethod.POST)
public @ResponseBody Result postXML(@RequestBody IntellexEvent intellexEvent) throws Exception

@XmlElement(name = "RuleName")私が気づいたもう1つのことは、フィールドのコメントを外す必要があるということです。ruleNameそうしないと、タグが<ruleName/>

于 2012-10-19T18:55:40.830 に答える