1.xml
    2.    wsdl: webservice description language web服务描述语言
        通过xml格式说明调用的地址方法如何调用,可以看错webservice的说明书
    
    3.soap simple object access protoacl (简单对象访问协议)
        限定了xml的格式
        soap 在http(因为有请求体,所以必须是post请求)的基础上传输xml数据
            请求和响应的xml 的格式如:    <Envelop>
                                <body>
                                //....
                                </body>
                            </Envelop>
                operation name:服务提供的方法
                
        
    静态方法不能发布为外部服务

请求过程分析:
        1.使用get方式获取wsdl文件,称为握手
        2.使用post发出请求
        3.服务器响应成功过
    

几种监听工具:
    http watch
    Web Service explorer
    eclipse 自带工具   TCP/IP Monitor

(来源:https://www.cnblogs.com/siqi/archive/2013/12/15/3475222.html)

1.

public JSONObject getDataFromMingTong(String PoorQualityTime,String cellName,String ECI) throws Exception{
final String smsUrl = "http://10.195.156.212/CMGZ/TopCell/getKpiOfPoorQualityCell.ashx" ;
try {
URL url = new URL(smsUrl+"?param={\"ECI\":"+ECI+",\"CellName\":\""+URLEncoder.encode(cellName, "UTF-8")+"\",\"PoorQualityTime\":\""+PoorQualityTime+"\"}") ;
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("Charset", "UTF-8");
OutputStream os = conn.getOutputStream();
InputStream is = conn.getInputStream();
byte[] b = new byte[1024*1024];
int len = 0;
String rst = "";
while((len = is.read(b)) != -1){
String ss = new String(b,0,len,"UTF-8");
rst += ss;
}
System.out.println("-----------新方法--------------------");
System.out.println(rst);
is.close();
os.close();
conn.disconnect(); JSONObject obj=new JSONObject();
obj=(JSONObject) JavaJsonUtil.jsonToBean(rst);
System.out.println("json转bean结果:-------");
System.out.println(obj); return obj;
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
return null;
}

2.

package com.eastcom_sw.inas.common.service.auth;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map; @Component("smsAuthServiceGZ")
@Transactional
public class SmsAuthServiceGz extends BaseAuthService{
protected static final Log logger = LogFactory.getLog(SmsAuthServiceGz.class); @Autowired
private UserService userService;
@Autowired
private SmsAuthDao smsAuthDao;
public AuthResponse auth(IntegeratedAuthReq req){
AuthResponse resp = new AuthResponse();
try {
logger.info("req param:"+req.getParams());
Map<String, String> params = req.getParams();
String optReason = null;
String leaderName = null;
String menuName = null;
if(params!=null){
optReason = params.get("optReason");
leaderName = params.get("leaderName");
menuName = params.get("menuName");
System.out.println("==============menuName:"+menuName);
//leaderPsd = params.get("leaderPsd");
}
String mobileNo=req.getMobileNo();
String msg="";
boolean authFlag=false;
MAUTH_LIST mlist = new MAUTH_LIST();
MAUTH_LOGS mlogs = new MAUTH_LOGS();
if(StringUtils.isNotBlank(mobileNo)){
String randomNum = (int) (Math.random()*9000+1000)+"";
User u = userService.loadUserByUsername(leaderName);
String url = "http://10.195.165.27:8095/INASSMSService/services/MsgService?wsdl" ; Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url) ;
call.setOperation("sendMsg");
call.setTimeout(320*1000); //超时时间
String sendMsg = "用户"+req.getUserName()+",申请查看"+req.getMobileNo()+"号码日志,申请理由"+optReason+",短信验证码"+randomNum+",同意请回复验证码(5分钟内有效)!" ; } } catch (Exception e) {
CommonRsUtil.extractException(e, resp);
}
return resp;
}
}

3.

package com.eastcom_sw.inas.workorder.rest.service;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.rmi.RemoteException;
import java.util.List; import javax.xml.rpc.ServiceException; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;import net.sf.json.JSONObject; @Component
@Transactional(readOnly = true)
public class WorkorderSendMsgService extends BaseService{
@Autowired
private WorkorderSendMsgDao workorderSendMsgDao; public void sendMsgOfOrderOverTime(String t_time) {
try {
int i=0;
//告警
String ctrTime="SYSDATE - T.ORDER_TIME >=5 AND SYSDATE - T.ORDER_TIME <=7";
List<JSONObject> list1 = workorderSendMsgDao.getOverTimeOrderData(ctrTime,t_time);
for (JSONObject jsonObject : list1) {
String total=jsonObject.getString("total");
String order_typedes=jsonObject.getString("order_typedes");
if(order_typedes.equals("无线网")){
String wuxian_phones=WorkorderSendMsgCommonUtils.getWuxianPhones(this); SendMsg(wuxian_phones,total,"即将超时");//发送的电话号码、工单条数
}
else if(order_typedes.equals("核心网")){
String hexin_phones=WorkorderSendMsgCommonUtils.getHexinPhones(this); SendMsg(hexin_phones,total,"即将超时");//发送的电话号码、工单条数
}
else if(order_typedes.equals("业务网")){
String yewu_phones=WorkorderSendMsgCommonUtils.getYewuPhones(this); SendMsg(yewu_phones,total,"即将超时");//发送的电话号码、工单条数
}
} }catch (Exception e) {
e.printStackTrace();
}
} public void SendMsg(String phones,String total,String msgt) throws ServiceException, RemoteException{
// //长短信 短信批量发送,多个号码已逗号分隔
final String smsUrl = "http://10.195.165.27:8095/INASSMSService/SmsServlet" ;
boolean success = true ;
try {
String sendMsg = "您好!您有"+total+"条集中性能工单"+msgt+",请及时处理!" ;
URL url = new URL(smsUrl+"?phones="+phones+"&msg="+URLEncoder.encode(sendMsg, "utf-8")+"&callback=jobTaskCallBack_"+System.currentTimeMillis()) ;
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"); OutputStream os = conn.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.flush();
dos.close(); InputStream is = conn.getInputStream();
DataInputStream dis = new DataInputStream(is);
byte d[] = new byte[dis.available()];
dis.read(d);
String rst = new String(d,"utf-8");
System.out.println("rst======="+rst);
if (rst.contains("短信发送成功!")) {
success = true ;
System.out.println("长短信 : "+phones+"||"+sendMsg+" [发送成功!]") ;
}else {
success = false ;
System.out.println("长短信 : "+phones+"||"+sendMsg+" [发送失败:"+rst+"]!") ;
}
conn.disconnect();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}

(代码取自部分项目例子,代码只做参考)

java 实现WebService的更多相关文章

  1. Java创建WebService服务及客户端实现(转)

    简介 WebService是一种服务的提供方式,通过WebService,不同应用间相互间调用变的很方便,网络上有很多常用的WebService服务,如:http://developer.51cto. ...

  2. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  3. java 调用webservice的各种方法总结

    java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...

  4. Axis2 webservice 之使用java调用webservice

    在上一篇中写了一个简单了webservice,实现了一个sayHello功能.那么webservice写好之后我们如何使用Java程序来调用webservice呢? 一.java调用的webservi ...

  5. C# 开发XML Web Service与Java开发WebService

    一.web service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...

  6. Java创建WebService服务及客户端实现

    简介 WebService是一种服务的提供方式,通过WebService,不同应用间相互间调用变的很方便,网络上有很多常用的WebService服务,如:http://developer.51cto. ...

  7. java的WebService实践(cxf)

    Java发布WebService,结合Spring,通过cxf的方式 难点:1.引用什么jar包: 1.创建接口 源码如下: package com.nankang; import javax.jws ...

  8. Java之webService知识

    Java之webService知识 1 webservice基础知识 1.1 webService请求的本质 一次webService本质请求,如下所示: 1.2 wsdl文档解析 wsdl文档元素结 ...

  9. delphi7编写客户端调用java服务器端webservice示例

    1. 首先取得java-webservice服务器端地址.我的是:http://localhost:8080/mywebservice/services/mywebservice?wsdl 2. 然后 ...

  10. Delphi动态调用Java的WebService 转

    Delphi动态调用Java的WebService —— 基于“Axis2发布WebService例子(HelloWorld)” uses ComObj; var WsObject: Variant; ...

随机推荐

  1. IT学习逆袭的新模式,全栈实习生,不8000就业不还实习费

    大家好: 我是马伦,也就是多年耕耘在IT培训一线的老马.老马一直怀揣普惠教育梦想初心,一直为莘莘学子能获得高质量的IT教育服务而奋斗. 之前老马在IT培训机构任职讲师多年,也有丰富的教学管理经验.接触 ...

  2. C#中DBNull.Value和Null的用法和区别

    DBNull.Value,, 是适用于向数据库的表中插入空值.而 null,是指在程序中表示空引用. 或者对象为空.就是没有实例化. row[column]的值为DBNull.Value的话,至少说明 ...

  3. 前端基础之CSS-Day13

    1.CSS 语法 1.1.CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector { property: value; property: value; ... proper ...

  4. tomca配置文件自动还原问题的解决 server.xml content.xml 等

    当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content.xml文件. 但是当我们修改完后重启Tomcat服务器时发现xml文件又被还原了,修改无效果. 为 ...

  5. Linux知识积累(4) Linux下chkconfig命令详解

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

  6. 新概念英语(1-123)A trip to Australia

    Who is the man with the beard?(胡须)A:Look, Scott. This is a photograph I took during my trip to Austr ...

  7. 未能加载文件或程序集“ RevitAPIUI.dll”

    revit二次开发中遇到的问题 RevitAPIUI.dll 只能 Native Library 中执行: 脱离了Native Library,API是跑不起来的 . 检查程序流程:登录,配置,启动r ...

  8. UVA-624 CD---01背包+输出路径

    题目链接: https://vjudge.net/problem/UVA-624 题目大意: 这道题给定一个时间上限,然后一个数字N,后面跟着N首歌的时间长度,要我们 求在规定时间w内每首歌都要完整的 ...

  9. POJ- 1094 Sorting It All Out---拓扑排序是否唯一的判断

    题目链接: https://vjudge.net/problem/POJ-1094 题目大意: 该题题意明确,就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列.是典型的拓扑排序,但输出格式上 ...

  10. Hadoop学习笔记(七):初识spark

    1. spark的安装: a). 首先复制一台虚拟机出来(复制任意一台master和slave即可),然后将其ip修改为192.168.XX.200,并将其hostname更改为c(hostnamec ...