接前面两个记录
项目需要用到web service相关技术,调研过程中的实例学习记录。
第一步:需要有股票服务的网址。。。网上自己百度
http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx
第二步:在刚才的网址后面加?wsdl
第三部:找到资源后,开始建立项目
new 一个java项目,命名****_client,随意就行
然后在src下面新建一个包 stock
然后在命令窗口里面执行如下
这条命令可以生成一个webservice 客户端,在解析wsdl的过程中可能有warning,只要不出现错误就可以不用管它
编译代码结束后,查看你刚刚建立的那个stock包下面,生成了很多文件
之后的工作就是调用这些文件来实现自己的需求功能
package stock; import java.util.List; public class GetStockInfoTest { /** * 测试 * */ public static void main(String[] args){ //调用股票的服务 ChinaStockWebService service=new ChinaStockWebService(); //创建ChinaStockWebServiceSoap对象 ChinaStockWebServiceSoap serviceSoap=service.getChinaStockWebServiceSoap(); //获取股票数据 ArrayOfString array=serviceSoap.getStockInfoByCode("sz000001"); //变量股票信息 List<String> stockList=array.getString(); for(String str:stockList) { System.out.println(str); System.out.println("********************************"); } } }
运行结果如下:
为了更好的看看生成的那些文件的功能,再测试一下调用股票的走势图的信息
定义一个服务的接口StockService
package stock; /** * @author thf * 自定义服务接口 * */ public interface StockService { //显示股票的走势图 public byte[] getStockByte(String stockCode); }
定义实现服务接口的类
package stock; /** * @author thf * 服务接口实现类 * */ public class StockServiceImp implements StockService { @Override public byte[] getStockByte(String stockCode) { //调用股票的服务 ChinaStockWebService service=new ChinaStockWebService(); //创建ChinaStockWebServiceSoap对象 ChinaStockWebServiceSoap serviceSoap=service.getChinaStockWebServiceSoap(); return serviceSoap.getStockImageByteByCode(stockCode); } }
控制层:
package stock; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; @WebServlet(name = "GetStockImageServlet ") public class GetStockImageServlet extends HttpServlet { private static final long serialVersionUID=1L; //new 一个服务接口实现类的对象ss private StockServiceImp ss=new StockServiceImp(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { byte[] imgeByte=ss.getStockByte("sh601169"); response.setHeader("content-type","image/jpeg"); OutputStream os=response.getOutputStream(); os.write(imgeByte); } }
这里要映射servlet的地址哈,然后启动tomcat访问该地址