第一次寫接口的時候,感覺太過籠統,壓根不知道接口是個什么東東,,后來自己也查了好多資料,才發現其實接口可以就認為是一個方法,自己多寫幾種以后就會發現挺簡單的,自己整理了一下資料,純屬增強自己的記憶,也方便更多像我這樣的菜鳥們參考。。。
下面是我自己寫的一個案例,用來同步文件用的這里我用的流,也可以用mutipartfile:
1.調用接口方法:
package com.weichai.test;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import sun.misc.BASE64Encoder;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Test1 {
public static void main(String[] args) throws Exception {
//1,獲取一個工廠實例
JaxWsDynamicClientFactory FACTORY = JaxWsDynamicClientFactory.newInstance();
//2,生成針對指定服務接口URL的客戶端
Client client = FACTORY.createClient("http://localhost:80/ws/analysisResultService?wsdl");
//3,調用指定的方法,注意入參第一個為方法名稱,第二個為方法的參數(可以傳入一個參數列表,一般為數組)
String jsonStr=getPicStr("F://111.txt");
System.out.println(jsonStr);
String loginName ="111";
String pwd ="2222";
String[] paraArray={loginName,pwd,jsonStr};
Object[] objs = client.invoke("getTaskResultInfo",paraArray);
System.out.print(objs[0].toString());
}
public static String getPicStr(String imgFile) {
InputStream inputStream = null;
byte[] data = null;
try {
inputStream = new FileInputStream(imgFile);
data = new byte[inputStream.available()];
inputStream.read(data);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
}
2.接口代碼編寫:
package com.weichai.modules.redpacket.webservice.service;
import com.alibaba.fastjson.JSON;
import com.weichai.common.mapper.JsonMapper;
import com.weichai.modules.redpacket.entity.RpCodeBinging;
import com.weichai.modules.redpacket.service.RpCodeBingingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Decoder;
import javax.jws.WebService;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@WebService(endpointInterface = "com.weichai.modules.redpacket.webservice.service.AnalysisResultService", serviceName = "analysisResultService",
targetNamespace="http://service.webservice.redpacket.modules.weichai.com/")
@Component
public class AnalysisResultServiceImpl implements AnalysisResultService {
@Autowired
private RpCodeBingingService rpCodeBingingService;
/**
* 同步二維碼webservice接口
* @param
* @param
* @param
* @return
*/
public String getTaskResultInfo(String loginName,String pwd , String fileStr){
//判斷用戶名及密碼
if(!("111".equals(loginName))||!("2222".equals(pwd))){
return JsonMapper.toJsonString("用戶名或密碼錯誤!");
}
if (null==fileStr){
return JsonMapper.toJsonString("文件為空");
}
//創建文件目錄
String path = "c://code";
File file = new File(path);
if (!file.exists()){
file.mkdir();
}
try {
String name="112.txt";
//調用方法保存文件到本地
bingingFile(name,path,fileStr);
long l = System.currentTimeMillis();
//new日期對象
Date date = new Date(l);
//轉換提日期輸出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
name = dateFormat.format(date)+".txt";
path = "c://codeB";
File fileB = new File(path);
if (!fileB.exists()){
fileB.mkdir();
}
//備份,調用方法保存文件
bingingFile(name,path,fileStr);
//調用方法獲取對象list
List<RpCodeBinging> list = getRpCodeBingingsList();
//調用service將文件保存到數據庫中
rpCodeBingingService.saveList(list);
} catch (Exception e) {
e.printStackTrace();
}
return JsonMapper.toJsonString("成功!");
}
/**
* 封裝保存文件方法
* @param name
* @param path
* @param fileStr
*/
private static void bingingFile(String name,String path,String fileStr){
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = new byte[0];
try {
b = decoder.decodeBuffer(fileStr);
String picPath = path+File.separator+name;
OutputStream out = new FileOutputStream(picPath);
out.write(b);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 封裝方法,解析.txt文件,返回實體對象list集合
* @return
* @throws IOException
*/
private static List<RpCodeBinging> getRpCodeBingingsList() throws IOException {
InputStream in = new FileInputStream("c://code/112.txt");
byte[] dat = new byte[in.available()];
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
StringBuffer buffer = new StringBuffer();
String data="";
while ((data=reader.readLine())!=null){
buffer.append(data);
}
String text= buffer.toString();
List<RpCodeBinging> list= new ArrayList<RpCodeBinging>();
list = JSON.parseArray(text,RpCodeBinging.class);
return list;
}
}
---------------------
作者:小小楓葉y葉
來源:CSDN
原文:https://blog.csdn.net/zhang_521521/article/details/79462168
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!