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. DELL EqualLogic PS存储硬盘故障数据恢复成功案例分享

    DELL EqualLogic PS4000采用虚拟ISCSI SAN阵列,为远程或分支办公室.部门和中小企业存储部署带来企业级功能.智能化.自动化和可靠性.以简化的管理.快速的部署及合理的价格满足了 ...

  2. java 1.7新特性

    try( ... ){ ... } catch(xxx e){ ... } java1.7特性,叫做try-with-resource,实现了AutoCloseable接口的实例可以放在try(... ...

  3. datable转xml

    /// <summary> /// datatable转换xml /// </summary> /// <param name="xmlDS"> ...

  4. python 人工智能资源推荐

    原创 2017-06-05 玄魂工作室 玄魂工作室 我翻了翻我自己曾经看过的书,还是放弃了推荐.原因很简单,我对这个领域并不是很熟悉,我来推荐资源有点误人子弟.so,简单推点其他人建议给我的内容,希望 ...

  5. 深度学习之 GAN 进行 mnist 图片的生成

    深度学习之 GAN 进行 mnist 图片的生成 mport numpy as np import os import codecs import torch from PIL import Imag ...

  6. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

        webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...

  7. 阿里云API网关(8)开发指南-SDK下载

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

  8. maven入门(1-3)构建简单的maven项目

    1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:generate -DgroupId=com.mycompany.app -Dartifac ...

  9. python学习之路01

    python自己也自学过一段时间了,看过视频,也买过几本基础的书来看,目前为止对于一些简单的代码还是可以看懂,但是自己总是觉得缺少些什么,可能是缺少系统化的学习,也可能是缺少实际项目经验,对于这些缺少 ...

  10. python isinstance 函数

    isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo)   如果参数object是classinfo的实例,或者object是class ...