如何写一个webService接口
第一次写接口的时候,感觉太过笼统,压根不知道接口是个什么东东,,后来自己也查了好多资料,才发现其实接口可以就认为是一个方法,自己多写几种以后就会发现挺简单的,自己整理了一下资料,纯属增强自己的记忆,也方便更多像我这样的菜鸟们参考。。。
下面是我自己写的一个案例,用来同步文件用的这里我用的流,也可以用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
版权声明:本文为博主原创文章,转载请附上博文链接!
如何写一个webService接口的更多相关文章
- 用vetr.x写一个HTTP接口适配器, 对接各种形式接口
用vetr.x写一个HTTP接口适配器, 对接各种形式接口 项目地址:https://github.com/hjx601496320/transmit 业务说明 在日常开发工作中,我们经常会遇到要和各 ...
- 利用MyEclipse开发一个webservice接口
一直以来对于接口这个东西都很好奇,各种客户也一直在说那个什么什么数据我们提供给你们一个接口就好了,结果还是不是很明白.于是乎就有了下面的小故事,接下来我们就进入正文吧 ---大概可以分为这样的步骤 1 ...
- 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, 请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗?
Dao 接口即 Mapper 接口.接口的全限名,就是映射文件中的 namespace 的值: 接口的方法名,就是映射文件中 Mapper 的 Statement 的 id 值:接口方法内的 参数,就 ...
- python写一个查询接口
知识点: 1.flask_sqlalchemy查询: Flask-SQLAlchemy 在您的 Model 类上提供了 query 属性.当您访问它时,您会得到一个新的所有记录的查询对象.在使用 al ...
- 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
Dao接口即Mapper接口.接口的全限名,就是映射文件中的namespace的值:接口的方法名,就是映射文件中Mapper的Statement的id值:接口方法内的参数,就是传递给sql的参数. M ...
- 利用MyEclipse开发一个调用webservice接口的程序
上一篇文章我们已经学习了如何使用Java 工具MyEclipse开发一个webservice接口,那么接口开发好了如何调用?接下来我们就来解决这个问题. 1:首先随便创建一个Java project选 ...
- 用flask写一个简单的接口
用falsk写一个简单的接口,这个接口的数据本来是爬虫爬取的数据,但是今天只写一个flask接口,数据就用测试数据好了. import random import re import time imp ...
- 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口
目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...
- 『动善时』JMeter基础 — 51、使用JMeter测试WebService接口
目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...
随机推荐
- MySQL Transaction--网络丢包导致长时间未提交事务
TCP三次握手(Three-Way Handshake) 建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立. TCP三次握手:第一次握手:Client将标志位SYN置为1,随机产 ...
- 工业网络安全 智能电网,SCADA和其他工业控制系统等关键基础设施的网络安全(总结)
1.工业网络的安全势必是未来安全方向必须要做的一个重要的方面 工业网络的概念:简单的说就是控制控制系统的网络,其可以进行基于网络的数字通信. 关键的基础设施:包括直接操作任何系统的设施 了解工业网络的 ...
- [centos][yum] centos升级到特定版本
我们已知,yum upgrade命令可以将整个系统升级到最新版本. 但是很多时候,我们需要更新到指定版本,比如,当前最新的CentOS版本是7.6.1810 但是我需要更新到7.4,可以如下这样做: ...
- P1801 黑匣子[堆]
题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...
- robot framework 笔记(二),web ui 元素定位
背景: 元素定位的方式很多,有通过 id.name.class等等,有感兴趣的同学可以参看相关文档,本文介绍 跟过文字定位的方法,在工作中一直使用这一种 no bb 方法如下: 1.根据"我 ...
- Union-Find(并查集): Union-Find Application
Union-find 可以应用在很多方面 之前我们看到了union-find在dynamic connectivity上的应用,接下来介绍它在percolation上的应用. union-find在K ...
- norm()函数
n = norm(v) 返回向量 v 的欧几里德范数.此范数也称为 2-范数.向量模或欧几里德长度. 例1: K>> norm([3 4]) ans = 5
- boost.tribool
tribool boost.tribool类似c++内建的bool类,但基于三态的布尔逻辑,在true和false之外还有一个indeterminate状态.一个例子场景是执行某项任务,在执行之前状态 ...
- YAML_13 嵌套循环,循环添加多用户
with_nested ansible]# vim add1.yml --- - hosts: web2 remote_user: root vars: un: [a, b, c] ...
- bzoj 3566: [SHOI2014]概率充电器 数学期望+换根dp
题意:给定一颗树,树上每个点通电概率为 $q[i]$%,每条边通电的概率为 $p[i]$%,求期望充入电的点的个数. 期望在任何时候都具有线性性,所以可以分别求每个点通电的概率(这种情况下期望=概率 ...