web service004——第二种方式调用,通过urlconection访问

参考网址www.webxml.com.cn

在这里插入图片描述
生成本地Java文件,并保存到指定的包中

wsimport -s . -p com.dgut.user http://localhost:8989/helloworld?wsdl

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

一、服务端

在这里插入图片描述

1.1、UserBean

package com.dgut.bean;

public class UserBean {
	private int id;
	private String name;
	private int age;
	private String sex;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
}

1.2、UserDao

package com.dgut.dao;

import javax.jws.WebService;

import com.dgut.bean.UserBean;

/* 使用@WebService注解*/
@WebService
public class UserDao {
	
	public UserBean findUserBeanById(int id) {
		UserBean userBean=new UserBean();
		
		//真实开发需要连接数据库获取数据
		userBean.setId(id);
		userBean.setName("王二毛");
		userBean.setAge(18);
		userBean.setSex("男");
		
		return userBean;
	}
}

1.3、PublishUserService

package com.dgut.service;

import javax.xml.ws.Endpoint;

import com.dgut.dao.UserDao;

public class PublishUserService {

	public static void main(String[] args) {

		/*
		 * 通过Java jdk自带的类来发布webservice
		 * 
		 * 参数解析:
		 * address:对外提供一个访问地址
		 * HelloWorldDao:向外发布的类
		 * 
		 * 发布webservice时默认生成wsdl说明书
		 * 通过http://localhost:8989/helloworld?wsdl访问wsdl说明书
		 */
		System.out.println("服务端开始发布初始化...");
		
		if (Endpoint.publish("http://localhost:8989/helloworld", new UserDao()) != null) {
			System.out.println("服务端发布成功");
		}
	}

}

二、客户端

在这里插入图片描述

2.1、UrlConectionInvoke

package com.dgut.client;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class UrlConectionInvoke {
	public static void main(String[] args) throws Exception {

		// 请求webservice的访问路径
		URL url = new URL("http://localhost:8989/helloworld");

		// 打开连接
		HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

		// 服务端接受POST请求
		urlConnection.setRequestMethod("POST");

		// 向服务端发送xml格式数据
		urlConnection.setDoOutput(true);

		// 接受服务端数据
		urlConnection.setDoInput(true);

		// 服务端接受的是xml格式的文件
		urlConnection.setRequestProperty("Content-Type", "text/xml;charset=utf-8");

		// 通过流来写数据到服务端
		OutputStream outputStream = urlConnection.getOutputStream();

		// 实例化一个buffer
		StringBuffer buffer = new StringBuffer();

		// 添加
		buffer.append(
				"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"http://dao.dgut.com/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">")
				.append("<soapenv:Body><q0:findUserBeanById><org0>2</org0></q0:findUserBeanById></soapenv:Body></soapenv:Envelope>");

		// 向服务端写数据
		outputStream.write(buffer.toString().getBytes());

		// 接受服务端传回的数据
		InputStream inputStream = urlConnection.getInputStream();
		byte[] b = new byte[1024];

		int length = 0;

		StringBuffer sb = new StringBuffer();

		while ((length = inputStream.read(b)) != -1) {// 等于-1说明已经读完
			String s = new String(b, 0, length);
			sb.append(s);
		}

		System.out.println(sb.toString());
	}
}

三、验证

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值