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. hdu 4553 约会安排

    约会安排 http://acm.hdu.edu.cn/showproblem.php?pid=4553 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  2. 老板怎么办,我们网站遭到DDoS攻击又挂了?

    相信现在正在阅读此文的你,一定听说过发生在上个月的史上最大的DDoS攻击. 美国东部时间2月28日,GitHub在一瞬间遭到高达1.35Tbps的带宽攻击.这次DDoS攻击几乎可以堪称是互联网有史以来 ...

  3. EasyUI中DataGrid隔行改变背景颜色。

    <table id="dg" class="easyui-datagrid" style="width: 1000px; height: 300 ...

  4. django models的点查询/跨表查询/双下划线查询

    django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...

  5. Sudoku 第一步

    看到这个问题的思路是先解决生成数独生成器的编写,然后再解决数独求解的问题.最开始第一想法就是暴力求解,仔细算一下复杂度,发现这肯定耗时很久,于是看了很多博客(见转载).我们用回溯搜出来正解.

  6. AutoCAD中的扩展字典及扩展记录(C#)

    在学习CAD扩展记录的过程中,遇到了一些问题,也积累了一些经验,现在给大家分享一些我的学习心得.在学习扩展字典之前需要读者了解cad的组码,也就是DxfCode.感兴趣的也可以了解一下扩展数据的相关内 ...

  7. python 面向对象之多态与绑定方法

    多态与多态性 一,多态 1,多态指的是一类事物有多种形态(python里面原生多态) 1.1动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.AB ...

  8. 新概念英语(1-131)Don't be so sure

    Lesson 131 Don't be so sure! 别那么肯定! Listen to the tape then answer this question. What's the problem ...

  9. api-gateway实践(05)新网关工作 - 缓存定义

    一.缓存分类 1.服务注册信息 1.1.[GroupCode_VersionCode]对应[Version定义]的缓存                       缓存类型:hash         ...

  10. python 爬取百度翻译进行中英互译

    感谢RoyFans 他的博客地址http://www.cnblogs.com/royfans/p/7417914.html import requests def py(): url = 'http: ...