联通vac和sp对接填坑备忘

坑很多,平时我也不写webservice,联通配合的哥们说来说去就是:“按规范”,这简直就是最高指示:“按既定方针办”。没办法只能自己苦逼的多试试。

建议联通参考参考微信公众平台上面的,有个文档,有个服务端填写,也搞个论坛能提问。

闲话少说,规范一共2点,一个webservice,一个ftp :

ftp这个真心不好理解,啥发起方vac,接受方sp,文件头格式文件体格式,绕的晕头转向的,其实就是他们有一个ftp服务器,咱们定期去考文件回来按照文件头文件体解析,这一块可以先不管,以后再填坑

webservice这一块报文demo如下

201310281653151945

1

18628071120

80

90120

9081086801

1

20150326153832

20370101000000

1028165315

1862807112090810868011028165315

字段名称并不和文档一模一样,我是先拿到文档的,按照文档写了对象,对不起,测试的时候找不到字段滴,主要就是Id和ID区别,其他倒还好

搭建maven + cxf + spring项目

新建一个maven项目,

pom.xml添加需要的jar

2.7.13

---

org.apache.cxf

cxf-rt-frontend-jaxws

${cxf.version}

org.apache.cxf

cxf-rt-transports-http

${cxf.version}

org.apache.cxf

cxf-rt-transports-http-jetty

${cxf.version}

org.apache.cxf

cxf-rt-ws-security

${cxf.version}

org.apache.cxf

cxf-rt-ws-policy

${cxf.version}

org.apache.cxf

cxf-bundle-jaxrs

${cxf.version}

javax.ws.rs

jsr311-api

1.1.1

web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

dingzl test

index

org.springframework.web.context.ContextLoaderListener

contextConfigLocation

classpath*:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

CXFService

org.apache.cxf.transport.servlet.CXFServlet

CXFService

/*

applicationContext.xml

xmlns:context="http://www.springframework.org/schema/context"

xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://cxf.apache.org/jaxws

http://cxf.apache.org/schemas/jaxws.xsd">

建java接口文件

这时候需要能看懂demo的xml报文,我就是走了很多弯路

这里文件夹按照soap.bossagent.vac.unicom.com来建,com/unicom/vac/bossagent/soap下面建java文件,

路径 :../src/main/java/com/unicom/vac/bossagent/soap/IOrderRelationUpdateNotify.java

package com.unicom.vac.bossagent.soap;

import javax.jws.WebParam;

import javax.jws.WebService;

import javax.jws.WebMethod;

@WebService(targetNamespace = "http://soap.bossagent.vac.unicom.com")

public interface IOrderRelationUpdateNotify {

@WebMethod(operationName="orderRelationUpdateNotify")

public Rsp orderRelationUpdateNotify(@WebParam(name="orderRelationUpdateNotifyRequest") OrderRelationUpdateNotifyRequest req);

}

targetNamespace 这个困惑我好久.没有这个的时候,报文http://soap.bossagent.vac.uni... 带上斜杠"/"的时候是能找到.

但是没有斜杠的时候一直报 Unexpected wrapper element {http://soap.bossagent.vac.uni...}orderRelationUpdateNotify found. Expected {http://soap.bossagent.vac.uni...}orderRelationUpdateNotify.

后来加上targetNamespace 就好了

实现类

路径 :../src/main/java/com/unicom/vac/bossagent/soap/OrderRelationUpdateNotifyImpl.java

package com.unicom.vac.bossagent.soap;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

@WebService

public class OrderRelationUpdateNotifyImpl implements IOrderRelationUpdateNotify {

private static final Logger logger = LogManager.getLogger(OrderRelationUpdateNotifyImpl.class);

@WebMethod(operationName="orderRelationUpdateNotify")

public Rsp orderRelationUpdateNotify(@WebParam(name="orderRelationUpdateNotifyRequest") OrderRelationUpdateNotifyRequest req) {

logger.info(req.toString());

Rsp rsp = new Rsp();

rsp.setRecordSequenceID(req.getRecordSequenceId());

rsp.setResultCode(0);

return rsp;

}

}

入参对象

package com.unicom.vac.bossagent.soap;

public class OrderRelationUpdateNotifyRequest {

private String recordSequenceId;// string 18 流水号,

private Integer userIdType;// integer 4 用户ID类型 1: MSISDN 2: PsedoCode

private String userId;// string 36 用户手机号码或伪码 UserIdType填1 为手机号码; UserIdType填2 为伪码

private String serviceType;// String 2 业务类型,见附录

private String spId;// string 21 SP标识

private String productId;// string 21 产品标识(此为SP在PRM侧申请的SP_Productid)

private Integer updateType;// integer 4 更新操作的类型包括: 1:订购 2:退定 3:点播 4:定购关系变更(一般是修改有效期)(保留,暂不用) 5:改号

private String updateTime;// string 14 更新时间

private String updateDesc;// string 100 更新操作的详细描述 联通在信、彩信等定购、点播接入号,和CheckPrice请求中AccessNo字段一致; 对crm侧订购、退订由vac根据产品填写;对其他业务填空

private String linkId;// string 20 事务关联ID,用于点播业务的临时定购关系关联,由平台产生。格式如下: MMDDHHMMSS+10位随机序列号; 为空表示无效。 用户点播时使用。

private String content;// string 140 内容,当UpdateType=5时,本字段填原用户手机号码或伪码,具体填写方式由UserIdType字段决定

private String effectiveDate;// string 14 订购关系生效时间, 格式:yyyyMMddhhmmss

private String expireDate;// string 14 订购关系失效时间, 格式:yyyyMMddhhmmss

private String time_stamp;// string 10 时间戳由VAC生成,格式是: MMDDHHMMSS,月日时分秒。

private String encodeStr;// string

.....get/set略。。。

这里和文档略有区别,要注意

返回值对象

package com.unicom.vac.bossagent.soap;

/**

* 返回值

* @author dingzl10

*

*/

public class Rsp {

private String recordSequenceID;

private Integer resultCode;

public String getRecordSequenceID() {

return recordSequenceID;

}

public void setRecordSequenceID(String recordSequenceID) {

this.recordSequenceID = recordSequenceID;

}

public Integer getResultCode() {

return resultCode;

}

public void setResultCode(Integer resultCode) {

this.resultCode = resultCode;

}

@Override

public String toString() {

return "Rsp [recordSequenceID=" + recordSequenceID + ", resultCode=" + resultCode + "]";

}

}

部署&测试

部署的时候呢,对方是不接受域名的,一定要ip和端口,这个要注意

测试

代码测试很容易就通过了

public static void main(String[] args) {

JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();

svr.setServiceClass(IOrderRelationUpdateNotify.class);

svr.setAddress("http://localhost:8080/sp/OrderRelationUpdateNotify");

IOrderRelationUpdateNotify hw = (IOrderRelationUpdateNotify) svr.create();

OrderRelationUpdateNotifyRequest r = new OrderRelationUpdateNotifyRequest();

r.setRecordSequenceId("111111111");

System.out.println(hw.orderRelationUpdateNotify(r).toString());

}

然并卵,估计他们也不会用代码来调

我还是用工具,直接考报文来的实在一点

要用post,get是调不到滴

返回值

201310281653151111945

0

联通vac订购关系web接口php代码,联通sp对接填坑备忘相关推荐

  1. 【SAP PO】X-DOC:SAP PO 接口配置 REST 服务对接填坑记

    X-DOC:SAP PO 接口配置 REST 服务对接填坑记 1.背景 2.PO SLD配置 3.PO https证书导入 1.背景 (1)需求背景: SAP中BOM频繁变更,技术人员在对BOM进行变 ...

  2. 微信小程序图片内容审核功能云函数+小程序端代码完整实现【填坑】

    文章目录 背景 实现 技术栈 小程序端 基本思路 主要代码 云函数 思考 主要参考 背景 开发微信小程序的同学如果涉及了社交类目,应该都会碰到由于缺少内容审核机制导致不过审的情况.微信小程序官方实际上 ...

  3. Lucene原理与代码分析(高手博客备忘)

    2019独角兽企业重金招聘Python工程师标准>>> 随笔 - 69  文章 - 77  评论 - 687 随笔分类 - Lucene原理与代码分析 Lucene 4.X 倒排索引 ...

  4. matlab抓取股票数据,Matlab经过sina web接口获取个数即时股票数据函数实现代码

    Matlab通过sina web接口获取个数即时股票数据函数实现代码 代码如下: function stockinfo = queryprice(stocktype, stockid) %stockt ...

  5. 联通vac增量对账回执

      增量请求文件:<根目录>/VAC/SubscribeInfo/<SPID>/   增量请求正确回执文件:<根目录>/VAC/SubscribeInfo/< ...

  6. Web前端低代码介绍的ppt大纲

    在当今快节奏的数字化时代,许多企业都面临着数字化转型的压力.然而,数字化转型往往需要大量的时间和资源来完成复杂的开发过程,这对于许多企业而言可能是一个巨大的挑战.为了解决这个问题,低代码开发应运而生. ...

  7. 失业在家抠脚的我花了2个月,读完了这份《Python Web接口开发与测试》,我居然进华为了...

    学习计划 失业在家抠脚到华为年薪25w测试工程师,我只花了2个月~ 底层逻辑 如果要进大厂,算法.底层.项目经验都要刷,小编以后会给大家更新各种面试题-- 如果要进大厂,项目经验.底层算法.网络.数据 ...

  8. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言

    前    言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...

  9. WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

最新文章

  1. Repeater控件的使用
  2. vs的资源管理器中一次性添加整个文件夹
  3. golang中的方法
  4. ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)
  5. 两步操作解决Python3中openCV库安装难题(清华大学镜像源)
  6. java 脚手架_肝了一个半月的 Java 项目快速开发脚手架:Chewing
  7. 调用第三方接口的几种请求方式
  8. oracle存储返回sql查询,如何做才能使record类型和table类型存储查询语句返回的多条记录?...
  9. tcplayer currenttime设置不成功_为什么你的“会员体系”不成功?权益设置很重要...
  10. Unity2D 小游戏之 RocketMouse
  11. primefaces教程_Primefaces树,TreeNode,TreeTable示例教程
  12. 揭秘ServerBootstrap神秘面纱(服务端ServerBootstrap)
  13. JavaScript 中的单例模式 (singleton in Javascript)
  14. python调用sqlldr_sqlldr用法
  15. Verilog上机实验(二):多功能计数器
  16. Python的6种内置对象
  17. shader 什么是UV
  18. 判断质数、分解质因数
  19. BiERU: Bidirectional Emotional Recurrent Unitfor Conversational Sentiment Analysis(20.12.10)
  20. 控制面板打印机显示不出来的解决办法

热门文章

  1. 移动硬盘文件或目录损坏且无法读取
  2. 程序员为何找不到女朋友
  3. 中职网络空间安全windows渗透
  4. PHP折扣,php 团购折扣计算公式_PHP教程
  5. C++打造传奇游戏修改器!(源码+文档)附带教学
  6. vivox21i的Android版本号,vivo X21i系统版本是多少?
  7. android读写excel文件
  8. Nginx 40 问!
  9. 【ppt幻灯片制作】Focusky教程 | 选择合适的背景
  10. maya建模的方法有很多种,你知道几种?这里有你们常见的吗?