Jersey服务如何传入实体类参数?

xiaoyang_job 2011-04-18 03:45:38
服务方法:

@Path("/addContact")
@POST
@Consumes(MediaType.APPLICATION_XML)
public void addContact(ContactInfo contactInfo) {
System.out.println(contactInfo.contactName);
}


实体类:

@XmlRootElement(namespace = "http://example.com")
@Entity
@Table(name = ("contact"))
public class ContactInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@XmlElement
public int contactId;
@XmlElement
public String contactName;

public ContactInfo() {
}

public ContactInfo(int contactId, String contactName) {
this.contactId = contactId;
this.contactName = contactName;
}
}


客户端测试类:

@Test
public void test4() {
Client c = Client.create();
WebResource webResource = c.resource("http://127.0.0.1/services/contact/");

ContactInfo contactInfo = new ContactInfo();
contactInfo.contactId = 1;
contactInfo.contactName = "xx";

webResource.path("addContact").post(contactInfo);
}


返回的状态码是415。
...全文
343 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyang_job 2011-04-21
  • 打赏
  • 举报
回复
我的测试代码是这样的:

@Test
public void test1() {
Client c = Client.create();
WebResource webResource = c.resource("http://127.0.0.1/services/contact/addContact");

ContactInfo contactInfo = new ContactInfo();
contactInfo.setContactId(1);
contactInfo.setContactName("xxx");

webResource.path("addContact").post(contactInfo);
}

返回的状态码是415.
不知道哪里不对,请教各位大侠。
  • 打赏
  • 举报
回复
HTTP 415 表示不支持的数据类型

@XmlRootElement(namespace = "http://example.com")
@Entity
@Table(name = ("contact"))
public class ContactInfo {

用在字段上的话,得再加这一句:

@XmlAccessorType(XmlAccessType.FIELD)
  • 打赏
  • 举报
回复
不需要 Provider

400 的话表示客户端请求时候有错误,估计是格式不对。
xiaoyang_job 2011-04-19
  • 打赏
  • 举报
回复
是放在类的头部吗,可是还是不行,现在的状态码是400。

需要写Provider吗?

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧