求助!CXF REST风格接口,如何接收byte[]属性的值?

HosiHui 2014-05-21 04:24:21
我用CXF 发布了REST风格的接口:

@POST
@Path("/test")
@Consumes({MediaType.APPLICATION_JSON})
public String test(Para para) throws Exception;

Para类是我自己封装的:

@XmlRootElement(name="para")
public class Para implements Serializable{
private String name;
private byte[] filedata;
public byte[] getFiledata() {
return filedata;
}
public void setFiledata(byte[] filedata) {
this.filedata= filedata;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
}

然后我通过http方式去POST请求这个接口地址,同时传入我的json格式的参数:

Para p = new Para();
p.setName("张三");

File file = new File("D:\\123.png"); //这里 D:\\123.png 是我本地D盘下的文件
InputStream instream = new FileInputStream(file);
int len = (int) file.length();
byte[] buff = new byte[len];
instream.read(buff);
p.setFiledata(buff); //把文件转为byte[],封装进para中
instream.close();

String jsonStr = JsonUtil.getJSONString(p); //JsonUtil.getJSONString是我的一个Object转json的工具类,执行后jsonStr的值为:{"name":"张三","filedata":[-119,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,-106,0,0,1...,0,0,0,91,60,79,66,0,]}
String url = "http://.../test"; // 接口对外发布的地址
httpInvoke(url,"POST",jsonStr); //httpInvoke方法是一个http请求的方法

我断点调试接口的实现类,发现参数para的字段name是接收到了值,为:“张三”,这个没错的,但是filedata这个字段却接收不到值!!
求教大神,应该怎么写才能让filedata这个byte[]类型的字段接收到值呢?
跪求!在线等啊!
...全文
267 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
上帝的无名指 2014-05-21
  • 打赏
  • 举报
回复
传过来的是 json字符串,所以你得用string接收 byte 换string看看是否有值,在找解决方案
suciver 2014-05-21
  • 打赏
  • 举报
回复
cxf传文件有专门的传附件的例子,楼主上官网看就知道了。给你个官网的链接http://cxf.apache.org/docs/jax-rs-multiparts.html

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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