xfire webservice实现附件上传

不再集成spring,只需ifire即可。

思路是把上传文件转换成流,然后通过传byte[]来实现附件的上传.
在附件上传之前,需要鉴权,
soap方式鉴权。

功能看附件代码,可直接运行。


部分代码:
服务端:
public UserInfo editNews(NewsInfo info, List<UploadFileInfo> fileList) {
if(fileList==null||fileList.size()<1){

}else{
for(UploadFileInfo uploadFileInfo:fileList){
// 这里调用文件处理类来保存文件
FileUtil.byteToFile(uploadFileInfo.getBytes(), "D:/log", uploadFileInfo.getFileName());
}

}

System.out.println(""+info.getNewsTitle());
System.out.println(""+info.getNewsUrl());
System.out.println(""+info.getNewsText());


UserInfo u = new UserInfo();
u.setName(info.getNewsTitle()+","+info.getNewsUrl());
u.setNum(222);
return u;

}


//
客户端代码:

public  void uploadFile() throws IOException{
String url="http://localhost:8080/x1/services/HelloWord";


Service serviceModel = new ObjectServiceFactory().create(HelloWorldS.class);
HelloWorldS service = (HelloWorldS) new XFireProxyFactory().create(serviceModel,url);
XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
client.addOutHandler(new ClientAuthenticationHandler("abcd","1234"));//鉴权用户名和密码

List<UploadFileInfo> fileList = new ArrayList<UploadFileInfo>();
File file = new File("D:/my");
File[] files = file.listFiles();
for(File f:files){
if(f.isFile()){
byte[] bytes =FileUtil.getBytesFromFile(f);
UploadFileInfo uplpadFileInfo = new UploadFileInfo();
uplpadFileInfo.setBytes(bytes);
uplpadFileInfo.setFileName(f.getName());
fileList.add(uplpadFileInfo);
}
}

NewsInfo newsInfo = new NewsInfo();
newsInfo.setNewsTitle("newsTitle");
newsInfo.setNewsUrl("newsUrl");
newsInfo.setNewsText("newsText");


UserInfo userInfo = service.editNews(newsInfo, fileList);  

System.out.print(userInfo.getName()+","+userInfo.getNum());


}

你可能感兴趣的:(xifre 鉴权和附件上传,xfire附件上传)