⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpdataagent.java

📁 在手机上 可以 存取数据 删除 数据 一个简单的手机应用
💻 JAVA
字号:


import javax.microedition.lcdui.*;
import javax.microedition.io.* ;
import java.io.*;
import java.util.Vector;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
public class HttpDataAgent {
    final int USE_ENV_DEV=0;   //* 用于开发(直接走互联网,不经过中移动)
    final int USE_ENV_WORK=1;  //* 用于实际应用(经过中移动)
    int m_useEnv = USE_ENV_DEV;
    //int m_useEnv = USE_ENV_WORK;
    
    String m_strMsg;
    String m_strUrl;
    String m_strParam;
    String m_strFullCtnt;  //* 页面的全部数据
    private int m_iCurrIdx;///
    private int m_iEndIdx;///
    Jianhuaban m_mp;
    Displayable m_disOrg;
    Displayable m_disNext;
    Reloadable m_objReload;
    OutputStream os;
    InputStreamReader din;
    ProcWaitWnd m_pww;
    public int m_iRecCount;
    BgTask m_bkTask;
    private Container container;
    public static int  lenghtMeetRecollect=0;
   public static int lenghtPic1=0; //方便反序列化时使用
   public static int lenghtPic2=0;
   public static int lenghtPic3=0;
    public HttpDataAgent(Jianhuaban mp) {
        m_mp = mp;
        m_pww = ProcWaitWnd.getInstance();
 
       
    }
    
    // 打开连接并获取数据
    
    public void DownData(  String strUrl, String strParam, Displayable disNext, Reloadable objReload,Container con){
      container=con;
        m_strUrl = strUrl;
        m_strParam = strParam;
     
        m_strFullCtnt = "";
        m_disOrg = m_mp.getDisplay().getCurrent();
        m_disNext=disNext;
        m_objReload = objReload;
        m_bkTask = new BgTask((ProcObserver)m_pww,m_disOrg,disNext,m_mp.getDisplay()){
            
            public boolean runTask() {
                try{
                    int ic;
                    HttpConnection hc;
                    byte []ba;
                    
                    m_pww.autoUpdProg();
                    
                    if( m_useEnv == USE_ENV_WORK ){
                        
                        hc = (HttpConnection) Connector.open("http://192.168.1.21/"+m_strUrl,Connector.READ_WRITE,true);
                        hc.setRequestProperty("X-Online-Host", "www.medipromos.com");
                    }else{
                        hc = (HttpConnection) Connector.open("http://192.168.1.21/"+m_strUrl,Connector.READ_WRITE,true);
                    }
                    
                    hc.setRequestMethod(HttpConnection.POST);
                    hc.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0" );
                    hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    
                    ba=m_strParam.getBytes("UTF-8");
                    hc.setRequestProperty("Content-Length",Integer.toString(ba.length) );
                    os = hc.openOutputStream();
                    os.write(ba);
                    os.close();
                    
                    if( hc.getResponseCode() != hc.HTTP_OK ){
                        //  m_mp.alert("获取网络数据失败!");
                        m_bkTask.m_failTitle = "读取网络数据";
                        m_bkTask.m_failCtnt = "连接网络失败!";
                        hc.close();
                        return false;
                    }
                    
                    din = new InputStreamReader(hc.openInputStream(), "UTF-8");
                    while( (ic = din.read()) != -1 ){
                        m_strFullCtnt = m_strFullCtnt + (char)ic ;
                    }
                    din.close();
                    
                    //* 得到记录数量
                    m_iCurrIdx = m_strFullCtnt.indexOf("recCount=")+"recCount".length();
                    m_iEndIdx = m_strFullCtnt.indexOf(";",m_iCurrIdx);
                    
                 m_iRecCount = Integer.parseInt(m_strFullCtnt.substring(m_iCurrIdx+1,m_iEndIdx));
                 m_iCurrIdx = m_iEndIdx+1;
             
    
                    
                 
                 if(m_strUrl.equals("newweb/wap/meetRecollect.asp")) {  // 注意这边的地址有时需要更改
                     SortComparator sortCom=new SortComparator();
                     int a=0;
                 
                     try{
                         RecordStore rs=RecordStore.openRecordStore("meetRecollect",true,RecordStore.AUTHMODE_PRIVATE,true);
                        if(rs.getNumRecords()>0){
                             RecordEnumeration re=rs.enumerateRecords(null,sortCom,true);
                             
                         while(re.hasNextElement()){
                          // container=Container.deserializeAD(re.nextRecord());
                          //  a=container.questionID;
                            }
                        }
                         rs.closeRecordStore();
                     }catch(Exception e){
                         e.printStackTrace();
                     }
                  
                     // a为rms包内的id号码
                     int y=m_mp.m_hda.m_iRecCount-Num.questionNum>m_mp.m_hda.m_iRecCount-a?m_mp.m_hda.m_iRecCount-Num.questionNum:m_mp.m_hda.m_iRecCount-a;//取两者比较大的那个
                     
                     //pic//
                     StringBuffer strTmp=new StringBuffer();
                     Vector picVector=new Vector();
                     
                     //下边是获取pic的路径的  //
                     for(int j=0;j<=m_mp.m_hda.m_iRecCount;j++){
                         // id 返回最新的id
                         if( !m_mp.m_hda.GetNextFld(null,strTmp) ){
                             return false;
                         }
                       
                         int ii= Integer.parseInt(strTmp.toString());
                     
                         //* ctnt
                         if( !m_mp.m_hda.GetNextFld(null,strTmp)){
                             return false;
                         }
                      
                         String str =strTmp.toString();
                       
                         //下边是获取pic的路径的
                         
                         //pic1
                         if( !m_mp.m_hda.GetNextFld(null,strTmp) ){
                             return false;
                         }
                         String   strPic1 = strTmp.toString();
                      
                    String pic1Byte=readPic(strPic1);
                         //pic2
                         if( !m_mp.m_hda.GetNextFld(null,strTmp) ){
                             return false;
                         }
                         String   strPic2 = strTmp.toString();
                   String pic2Byte=readPic(strPic2);
                         //pic3
                         if( !m_mp.m_hda.GetNextFld(null,strTmp) ){
                             return false;
                         }
                         String    strPic3 = strTmp.toString();
                    String pic3Byte=readPic(strPic3);
                         
             // }
              saveMeetRecollect("meetRecollect",m_mp.m_hda.m_iRecCount,ii,str,pic1Byte,pic2Byte,pic3Byte) ; 
                     
                   }
                 }
                    
                    if( m_iRecCount == 0 ){////
                        // m_objReload.Reload();
                        m_objReload.Reload();
                        m_bkTask.m_failTitle = "读取网络数据";
                        m_bkTask.m_failCtnt = "没有找到您要查找的数据!";
                        hc.close();
                        return false;////
                    }////
                    
                    hc.close();
                    
                }catch(IOException ioe){
                    m_strMsg=ioe.getMessage();
                    m_objReload.Reload();
                    m_bkTask.m_failTitle = "读取网络数据";
                    m_bkTask.m_failCtnt = "获取网络数据时发生异常!异常:"+m_strMsg;//启动loadAD和loadMeetNotice方法就抛出这个异常,晋注释
                    return false;
                }
                
                m_objReload.Reload();
                
                
                return true;
                
            }
            
            public void cancel() {
            }
        };
        
        BgTask.runWithProgressGauge(m_bkTask, "正在从网络读取数据","请稍候...", false, m_mp.getDisplay());
    }
    //* 得到下一个字段的内容
    public boolean GetNextFld(StringBuffer strFldName,StringBuffer strFldVal){
        
        int iIdx;
        int iFldLen;
        String strFldLen;
        
        m_iEndIdx = m_strFullCtnt.indexOf("=",m_iCurrIdx);
        if( m_iEndIdx == -1 ){//* 没有内容了
            return false;
        }
        iIdx = m_strFullCtnt.indexOf(",",m_iCurrIdx);//* 记录字段名后面逗号的位置
        if( iIdx == -1 ){
            return false;
        }
        
        //* 记录字段名
        if( strFldName != null ){//* 需要字段名,格式:newstime,9=2006-11-2
            strFldName.delete(0,strFldName.length());
            strFldName.append(m_strFullCtnt.substring(m_iCurrIdx,iIdx));
        }
        
        if( m_iEndIdx == m_strFullCtnt.length()-1 ){//* 这是最后一个字段,且该字段没有内容
            return true;
        }
        
        //得到当前字段的长度
        strFldLen = m_strFullCtnt.substring(iIdx+1,m_iEndIdx);
        if( strFldLen.length() == 0 ){  //* 没有指定当前字段的长度
            m_iCurrIdx = m_iEndIdx+1;
            strFldVal.delete(0,strFldVal.length());
            return true;
        }
        iFldLen = Integer.parseInt(strFldLen);
        if( iFldLen < 0 ){ // 错误的字段长度
            return false;
        }
        
        strFldVal.delete(0,strFldVal.length());
        strFldVal.append( m_strFullCtnt.substring(m_iEndIdx+1,m_iEndIdx+1+iFldLen) );
        m_iCurrIdx = m_iEndIdx+1+iFldLen;
        
        return true;
    }
    
   
    /////////////////////////////////////
    private  String  readPic(final String UIL){
        String path=UIL.substring(0);
        int ic=0;
        Image image=null;
        HttpConnection hc=null;
        InputStream is=null;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
      
        byte[] imageData = null; //自己写的
        int ch=0;
        try{
            hc=(HttpConnection)Connector.open("http://192.168.1.21/"+path);
            is = hc.openInputStream();//
            while( (ch = is.read()) != -1 ){
                baos.write(ch); // 读取网络图片
            }
            
     
        }catch(Exception e){
           e.printStackTrace(); 
        }finally{
            try{
           if(is!=null){
               is.close();
           }
         if(hc!=null){
               hc.close();
         }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
      // imageData = baos.toByteArray();// 把图片转换成字节
      //String str=baos.toString();
        //image = Image.createImage(imageData, 0, imageData.length);//在此工程中,不需要读取图片的显示
        
        return baos.toString();
    }
    //保存这个会议的回顾
    private  void saveMeetRecollect( String fileName,int num,int id,String str, String pic1, String pic2, String pic3){
        lenghtMeetRecollect=str.length();
        lenghtPic1=pic1.length();
        lenghtPic1=pic2.length();
        lenghtPic1=pic3.length();
        String meetRecollect=""+id+str+pic1+pic2+pic3;
      container.setPic1(pic1);
      container.setPic2(pic2);
     container.setPic3(pic3);
     /*
  // DataSave ds=new DataSave(fileName);
      //ds.addTheStore(container.getMeetRecollect(),container);
      
    
        int j=ds.getCurrentID();
        
        StringBuffer sb=new StringBuffer();
     if(ds.getNum()==0||id<=Num.picNum){
         for(int m=0;m<id;m++){
              for(int i=1;i<id;i++){
                   
                ds.addTheStore(fileName,container);
               
            }
       }
       if(ds.getNum()!=0&&id>Num.picNum){
           for(int i=id-num+j+1;i<=id;i++){
             ds.addTheStore(fileName,container);
           }
          for(int i=id-num+1;i<id-num+j;i++){
              //  ds.setTheData(fileName,container);
          }
       }
       if(ds.getNum()!=0&&id >num){
           for(int i=id-num+1;i<=id;i++){
            //   ds.setTheData(fileName,container);
          }
       }
   }
      */ 
 
}
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -