2010-09-02 56 views
4

基本上我有一個寧靜的服務(post)消耗(application/json)併產生(application/json)。該服務的單個參數是一個帶註釋的java對象。我使用org.jboss.resteasy.client.ClientRequest發送請求到服務。但是,我在客戶端和異常中發現此異常:爲什麼媒體類型application/json失蹤

無法找到內容類型application/json類型的編寫器。

這是否意味着我缺少一些庫jars或我必須編寫自己的應用程序/ json作家?

我使用RestEasy的1.1

馬克

+0

[ClientRequest,如何將POJO的序列化爲json數據正確?找不到內容類型的應用程序/ JSON類型的作家:] [1] [1]:http://stackoverflow.com/a/18113749/1817029 – 2013-08-07 21:08:14

回答

2

其實我有同樣的問題,我也加入了對應用程序/ JSON的MIME類型投棄商解決。我不知道是否resteasy 1.1 containts拋棄提供者,但1.2版本。 另外,如果您使用的是jdk 1.6,則必須排除javax.xml.stream:stax-api jar文件,否則您將遇到問題。

這裏是例子:

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 


@XmlRootElement(name="account") 
public class Account { 

    private Long id; 
    private String accountNo; 


    public Account(){} 
    public Account(String no) { 
     accountNo=no; 
    } 


    @Id 
    @XmlElement 
    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 

    @XmlElement 
    public String getAccountNo() { 
     return accountNo; 
    } 
    public void setAccountNo(String a) { 
     accountNo = a; 
    } 

} 

和JAXB類:

import java.util.ArrayList; 
import java.util.List; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 


    @Path("/account") 
    public class AccountService { 


     @GET 
     @Path("/{accountNo}") 
     @Produces("application/json") 
     public Account getAccount(@PathParam("accountNo") String accountNo) { 
        return new Account(accountNo); 
     } 

    } 

這一切,有一個愉快的一天!

6

拉曼是正確的。 Jettison是一個有效的選擇。你也可以使用傑克遜。 如果您正在使用Maven,它爲包括您以下依賴簡單POM:

<dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jackson-provider</artifactId> 
     <version>2.3.2.Final</version> 
    </dependency> 

在這一點上,你應該沒有問題,編寫代碼,如:

SomeBean query = new SomeBean("args") 
    request.body("application/json", query); 
    ClientResponse response = request.post(); 
+0

這是當前正確的答案。 – Lemmy4555 2017-02-15 13:32:58

1

下方加入資源類或造成異常的方法

@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
相關問題