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. 洛谷 P3797 妖梦斩木棒

    https://www.luogu.org/problem/show?pid=3797 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了 ...

  2. NOIP2016 天天爱跑步 正解

    暴力移步 http://www.cnblogs.com/TheRoadToTheGold/p/6673430.html 首先解决本题应用的知识点: dfs序——将求子树的信息(树形)转化为求一段连续区 ...

  3. JAVA_SE基础——24.面向对象的内存分析

    黑马程序员入学blog ... 接着上一章的代码: //车类 class Car{ //事物的公共属性使用成员变量描述. String name; //名字的属性 String color; //颜色 ...

  4. Python内置函数(46)——format

    英文文档: format(value[, format_spec]) Convert a value to a "formatted" representation, as con ...

  5. 阿里云API网关(9)常见问题

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  6. spring-oauth-server实践:授权方式四:client_credentials 模式下有效期内重复申请 access_token ?

    spring-oauth-server入门(1-12)授权方式四:client_credentials 模式下有效期内重复申请 access_token ? 一.失效重建邏輯 二.如果沒有失效,不会重 ...

  7. OAuth2.0学习(1-1)OAuth2.0是什么?

    目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题 OAuth就是用于为第三方应用授权访问用户的资源应用的. 目前有OAuth1. ...

  8. mysql(2)—— 由笛卡尔积现象分析数据库表的连接

    首先,先简单解释一下笛卡尔积. 现在,我们有两个集合A和B. A = {0,1}     B = {2,3,4} 集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式: A×B = {(0,2 ...

  9. Android 学习资料入门到精通(PDF集合)共54本

    最近收集一些安卓入门到精通,包含游戏编程,网络编程,多媒体开发,需要学习朋友就下载保持下来,下载链接在最下面 下面是网盘内容 14天学会安卓开发_(完整版).pdf Android 4  游戏高级编程 ...

  10. 推荐几个IDEA插件,Java开发者撸码利器。

    这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍. JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署.收费的,破解比较麻烦.不过功能确 ...