web service004——第二种方式调用,通过urlconection访问
Posted 江州益彤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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());
}
}
三、验证
以上是关于web service004——第二种方式调用,通过urlconection访问的主要内容,如果未能解决你的问题,请参考以下文章
Android如何启用Service,如何停用Service。