?? httpdataagent.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 = "連接網絡失?。?quot;;
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 + -