联通订购接口

下载jdom www.jdom.org 
// import "java.io.*,org.jdom.*,org.jdom.input.*,org.jdom.output.*"
// System.out.println("Start received ! ");
 SAXBuilder sb  =   new  SAXBuilder();
 String indent 
=   "      "
 
boolean  newLines  =   false
 XMLOutputter outp 
=   new  XMLOutputter(indent,newLines, " UTF-8 " );
 String error 
=   "" ;
 String cfgErrXml 
=   " responseError.xml " ;
 
boolean  isSaveOK  =   false ;
 
int  UserID  =   - 1 ;
 
int  Status  =   0 ;
// xml data
 String MDN  =   "" ;
 String SPCode 
=   "" ;
 String ProductCode 
=   "" ;
 String TransactionID 
=   "" ;
 String EffectiveDate 
=   "" ;
 Document doc 
=   null ;
 String errorNum 
=   "" ;
 String errorDes 
=   "" ;
String xmlResFile 
=   " provisionUNI.error.xml " ;
xmlResFile 
=  cfgProvisionPath  +  File.separator  +  xmlResFile;
boolean  isOk  =   false ;
wsDate wsd 
=   new  wsDate();
// add log 
StringBuffer b  =   new  StringBuffer();
b.append(
" ---WS Start received data  " +  request.getRemoteAddr() +   "   "   +  wsd.now()  +    "  ---- " );
b.append(request.getRequestURI()
+   " ? "   +  request.getQueryString() + "" );
// end add log
InputStream in  =  request.getInputStream();
try {
int c = -1;
b.append(
"--#RAW DATA Received Start--");
StringBuffer rawsb 
= new StringBuffer();
while((c = in.read())!= -1){
rawsb.append((
char)c);
}

String rawTmpfile 
= "";
rawTmpfile 
= cfgProvisionPath + File.separator + "rawtmp.txt";
FileOutputStream o 
= new FileOutputStream(rawTmpfile);
o.write((rawsb.toString()).getBytes(), 
0 , rawsb.length());
o.close();
in.close();
b.append(rawsb.toString());
b.append(
"--#RAW DATA Received End--");
FileInputStream rawIn 
= new FileInputStream(rawTmpfile);
doc 
= sb.build(rawIn); 
rawIn.close();
rawsb 
= null;
}
catch (org.jdom.JDOMException  jdoer) {
d(jdoer.toString());
}
catch (java.io.IOException  ioer) {
d(ioer.toString());
}
catch (java.lang.Exception ler) {
d(ler.toString());
}

if (doc  ==   null ) {
errorNum 
= "-1";
errorDes 
= "REQUEST ILL XML FILE EXCEPTION";
isOk 
= false;
}
else {
//load(doc);
d("doc loaded ");
Element root 
= doc.getRootElement(); 
java.util.List U_MAXs 
= root.getChildren();  
Element deck 
= (Element)U_MAXs.get(0); 
String deckName 
= deck.getName();
deckName 
+= "";
String fldActiveTime 
= "";
if(deckName.equals("PreSubscriptionNotify") ){
Status 
= 2;//order
fldActiveTime = "EffectiveDate";
}
else if (deckName.equals("SubscriptionCancel")){
Status 
= 3;//cancel
fldActiveTime = "ExpireDate";
}
else{
Status 
= -1;//error
}

try{
MDN 
= ((Element)deck.getChild("MDN")).getValue();
SPCode 
=((Element)deck.getChild("SPCode")).getValue();
ProductCode 
=((Element)deck.getChild("ProductCode")).getValue();
TransactionID 
=((Element)deck.getChild("TransactionID")).getValue();
EffectiveDate 
=((Element)deck.getChild(fldActiveTime)).getValue();
deck.removeChild(fldActiveTime);
//((Element)deck.getChild("MDN")).setText("13049303775"); 
}
catch(java.lang.NullPointerException ne){
d(
"load:" + ne.toString());
}
catch(java.lang.Exception e){
d(
"load:" + e.toString());
}

b.append(
" DATA PARSED ");
b.append(
" MDN:"+MDN).append(" SPCode:"+SPCode);
b.append(
" ProductCode:"+ProductCode);
b.append(
" TransactionID:" +TransactionID);
b.append(
" Satus:" +Status);
b.append(
" EffectiveDate:" +EffectiveDate);
b.append(
"");
....
}
将xml数据包发送回去
if (isOk) {
//p.uniResponse();
try{
outp.output(doc, out); 
b.append(
" RESPONSE");
b.append(outp.outputString(doc));
}
catch( java.io.IOException ioe){
d(ioe.toString());
}

//outp.output(doc, System.out); 
}
else {
//p.setErrorXmlFile(xmlResFile);
cfgErrXml = xmlResFile;
//p.uniResponseError("-1", "User Order  failure!!");
errorNum = "-1";
errorDes 
= errorDes.equals("")? "User Order  failure!!" : errorDes;
try{
doc 
= sb.build(new File(cfgErrXml)); 
b.append(
" RESPONSE ERROR: " + errorDes + "");
}
catch( Exception er){
d(er.toString());
}

Element root 
= doc.getRootElement(); 
java.util.List U_MAXs 
= root.getChildren(); 
Element deck 
= (Element)U_MAXs.get(0); 
 
Element errorCode 
= deck.getChild("ValidErrorCode");
errorCode.setText(errorNum); 
Element errorInfo 
= deck.getChild("ValidErrorInfo");
errorInfo.setText(errorDes);
//p.uniResponse();
try{
outp.output(doc, out); 
b.append(outp.outputString(doc));
}
catch( java.io.IOException ioe){
d(ioe.toString());
}

}

// unierr.xml
<? xml version = " 1.0 "  encoding = " UTF-8 " ?>
< U - MAX >
    
< ValidError >
        
< ValidErrorCode > 16777217 </ ValidErrorCode >
        
< ValidErrorInfo > The  ' ProductCode '  element has an invalid value according to its data type. An error occurred at( 35 29 ). </ ValidErrorInfo >
    
</ ValidError >
</ U - MAX >
接口格式
CODE
?  
定制服务
XML Format:
request:
< webmethod id = ”service_order_to_cp” >
   
< cpcode value = < xxx > />
   
< userid value = < 23424 > />
   
< encryptflag value = < y | n > />
   
< serviceid value = < news > />
< ispack value = < Y | N > />
   
< sub_type value = < month | per_hit | day > />
   
< orderdate value = 2003 - 01 - 01   23 : 59 : 01 ”  />
</ webmethod >

response:
< webmethod id = ”service_order_to_cp” >
< result status = < 0 | 1 > />
</ webmethod >

退定服务
XML Format:
request:
< webmethod id = ”service_disorder_to_cp” >
 
< cpcode value = < xxx > />
 
< userid value = < 23424 > />
 
< encryptflag value = < y | n > />
 
< serviceid value = < news > />
< ispack value = < Y | N > />
 
< sub_type value = < month | per_hit | day > />
< disorderdate value = 2003 - 01 - 01   23 : 59 : 01 ”  />

</ webmethod >
response:
< webmethod id = ”service_disorder_to_cp” >
< result status = < 0 | 1 > />
</ webmethod >


程序代码,servlet文件
以下为回复隐藏的内容 
CODE
package  com.goway.wapuser;

import  javax.servlet. * ;
import  javax.servlet.http. * ;
import  java.io. * ;
import  java.util. * ;
import  org.jdom.input.SAXBuilder;
import  org.jdom.Document;
import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;
import  org.jdom.Element;
import  com.gzidc.wapuser.db.bean.wapuser;
import  org.jdom.Attribute;
import  org.jdom.output.XMLOutputter;
import  org.jdom.output.Format;

public   class  wapreceive  extends  HttpServlet  {
   
private static Log log = null;
   
private static final String CONTENT_TYPE = "text/xml";
   
private int resultstatus = 1;//返回状态值
   SAXBuilder sb = new SAXBuilder();//用到Jdom
   private Document doc=null;

   
//Initialize global variables
   public void init() throws ServletException {
   }


   
//Process the HTTP Get request
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       response.setContentType(CONTENT_TYPE);
       PrintWriter out 
= response.getWriter();
       Format format 
= Format.getPrettyFormat();
       XMLOutputter outputter 
= new XMLOutputter(format.setIndent("  "));
       String flag 
= "service_order_to_cp";

       
if(request.getContentLength() <= 0){//没有数据
           resultstatus = 1;
           log.error(
"接收数据为空");
           outputter.output(setReturnStatus(resultstatus,flag), out);
           
return;
       }


       
try{
           DataInputStream din 
= new DataInputStream(request.getInputStream());//输入流
           
           doc 
= sb.build(din);//绑定输入流
           din.close();

           wapuser user 
= new wapuser();//定义一个bean,里面有相应字段变量及数据库操作方法
           
//得到根元素
           Element root = doc.getRootElement();
           flag 
= root.getAttributeValue("id");//根元素的属性id的值

           
//得到根元素所有子元素的集合
           List message = root.getChildren();
           
//叠代显示所有元素
           Iterator it = message.iterator();
           
while (it.hasNext())
           
{
               Element e 
= (Element) it.next();
               
if(e.getName().equals("cpcode")){
                   user.setCpcode(e.getAttributeValue(
"value"));//设置cpcode=属性value的值
               }

               
else if(e.getName().equals("userid")){
                   user.setUserid(e.getAttributeValue(
"value"));
               }

               
else if(e.getName().equals("encryptflag")){
                   user.setEncryptflag(e.getAttributeValue(
"value"));
               }

               
else if(e.getName().equals("serviceid")){
                   user.setServiceid(e.getAttributeValue(
"value"));
               }

               
else if(e.getName().equals("ispack")){
                   user.setIspack(e.getAttributeValue(
"value"));
               }

               
else if(e.getName().equals("sub_type")){
                   user.setSub_type(e.getAttributeValue(
"value"));
               }

               
else if(e.getName().equals("orderdate")){
                   user.setOrderdate(e.getAttributeValue(
"value"));
               }

               
else if(e.getName().equals("disorderdate")){
                   user.setDisorderdate(e.getAttributeValue(
"value"));
               }

           }

           
int updatenum = user.setWapUser();//设置值后,此方法把值存入数据库,当然有相关的逻辑判断,包括是否已存在,是否更新退定等
           if(updatenum>0){//updatenum大于零说明操作数据库成功
               resultstatus = 0;//接收成功
               log.info(flag+"用户信息"+user.getUserid()+"成功");//是个log的操作
           }


    
//导出xml格式,输出到out流中,setreturnStatus()为设置xml格式
               outputter.output(setReturnStatus(resultstatus, flag), out);
       }
catch(Exception e){
           log.error(
"接收数据有误",e);//log操作
       }


   }


   
/**
    * 设置返回信息
    * 
@param resultstatus int
    * 
@return Document
    
*/

   
private Document setReturnStatus(int resultstatus,String flag){
       Element webelement 
= new Element("webmethod");//
       Document retdoc = new Document(webelement);
       webelement.setAttribute(
new Attribute("id",flag));//根属性
       webelement.addContent(new Element("result").setAttribute(new Attribute("status",String.valueOf(resultstatus))));//添加元素及属性
       return retdoc;
   }


   
//Process the HTTP Post request
   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doGet(request, response);
   }


   
//Clean up resources
   public void destroy() {
   }


   
static
   
{
       log 
= LogFactory.getLog(com.goway.wapuser.wapreceive.class.getName());//设置log
   }


}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值