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

📄 commonhttphandler.java

📁 j2me radius soket radius client
💻 JAVA
字号:
package org.httpClient.com;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import org.gui.com.HttpClientSetForm;
import org.gui.com.ResultForm;
import org.gui.com.WMLForm;
import org.gui.com.MainForm;
import org.xmlpull.v1.XmlPullParserException;
import java.io.*;
import javax.microedition.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class CommonHttpHandler extends Thread{
	private String result;
	private Display display;
	private String URL = null;
	private String message ="";
	private String method = "get";
	private long  startTime = 0;
	private long  overTime = 0;
	private WMLForm arrayForm;
	private int count = 1;
	private long time;
	private int isContinue = 0;
	private boolean stop = false;
	private RMStore log = null;
	private HttpClientSetForm hc = null;
	private ResultForm     resultForm = null;
    private int   number = 1;
    private HttpConnection con = null;
    private InputStream  gin = null; 
    private DataInputStream pin = null;
    private DataOutputStream out = null;
    private long  sum = 0;
    private Header header;
    private boolean logOpen = false;
	public CommonHttpHandler(Display display,RMStore log,ResultForm resultForm,
			                 int number,Header header,boolean logOpen,int isContinue){
		this.display = display;
		this.log = log;
        this.number = number;
        this.header = header;
        this.count = number;
        this.logOpen= logOpen;
        this.URL = header.getUrl();
        this.resultForm = resultForm;
        this.isContinue = isContinue;
	}
	public void run() {
	   while(!stop){
		 if(method.equals("get"))
			 URL = URL+"?"+ header.getMessage();
	     process();
	     storeLog();
	   }  
	}
	 public void connectHttp(String URL){
    	
    	try {                
    		if (!URL.startsWith("http://") &&!URL.startsWith("https://")) {                
    			URL = "http://" + URL;            
    			}            
    		   con = (HttpConnection)Connector.open(URL, Connector.READ_WRITE); 
    		   if(header.getMethod().equals("get"))
    		      con.setRequestMethod(HttpConnection.GET);
    		   else
    			  con.setRequestMethod(HttpConnection.POST);
    		   con.setRequestProperty("User-Agent",header.getUserAgent()); 
    		   con.setRequestProperty("Content-Language", header.getAcceptLanguage());
    		   con.setRequestProperty("Content-Type",header.getContentType()); 
    		   con.setRequestProperty("Connection", "Keep-Alive");
    	   } catch (Exception ex) {   
    			   System.out.println(ex);    
    			   ex.printStackTrace();            
    	  }
    }
	public void doGet()throws IOException{ 
	    result = "";
	    startTime = System.currentTimeMillis();
		try{ 
		  if(gin!=null)
		      gin.available();
	      gin = new DataInputStream(con.openInputStream());	
	      int ch;
	      while ((ch = gin.read()) != -1) {
	        result = result + (char) ch;
	      }
	      overTime = System.currentTimeMillis();
	      time = overTime - startTime; //算延时 
	      System.out.println("result is: "+result);
	      displayResult("get");
	       number--;
	    }catch(IOException ex){
	    	ex.printStackTrace();
	    }
	    finally
	    {
	      if(isContinue == 1){
	    	  if (con != null)
            	  con.close();
	    	  if (gin!= null)
	  	        gin.close();
	      }          
	    } 
	}
	public void doPost()throws IOException{
	    result = "";
	    startTime = new Date().getTime();
	    try { 
	      out = con.openDataOutputStream();
	      byte[] request_body = null;
	      int j = 0;
	      for(int i=0;i<header.getMessage().length();i++){
	    	   if(header.getMessage().charAt(i)=='&'){
	    		   request_body = header.getMessage().substring(j,i).getBytes();
	    		   out.write(request_body);
	    		   j = i;
	    	   }
	      }
	      request_body = header.getMessage().substring(j).getBytes();
		  out.write(request_body);
	      pin = new DataInputStream(con.openInputStream());
	      int ch;
	      while ((ch = pin.read()) != -1) {
	        result = result + (char) ch;
	      }  
	      overTime = new Date().getTime();
		  time = overTime- startTime; //算延时    
		  displayResult("post");
	      number--;
	    }catch(IOException ex){
	    	ex.printStackTrace();
	    }finally {
	        if(isContinue == 1){
	            if (con != null) con.close();
	            if (pin != null) pin.close();
	            if (out != null) out.close();
	        }
	    }    
	}
	public void displayResult(String method){
		  if(number==count)  //说明是一个新的页面
		         resultForm.deleteAll();  //清空页面
		  resultForm.append("第"+number+"包发送情况: \n");
		  if(header.getMethod().equals("post"))
	          resultForm.append("method: post\n");
		  else
		       resultForm.append("method: get\n"); 
	      resultForm.append("delay: "+time+"\n");
	      if(time!=0)
	        resultForm.append("Numbers/s: "+1000/time+"\n");
	      else
	    	  resultForm.append("Numbers/s: BigNumber\n");
	      sum = sum + time;
	      if(number ==count){
	    	  if(count==1)
	    	        resultForm.append("message is: "+result+"\n");  //只有一个包时显示消息内容
	    	  resultForm.append("success: "+ count+"   fail: 0\n");
	    	  resultForm.append("average delay: "+sum/count+"\n");
	    	  resultForm.append("isContinue is: " +isContinue);
	    	  display.setCurrent(resultForm);
	      }
	}
	public void storeLog(){
		 if(logOpen){
		       log.writeRecordLog(new Date()+"\n"+
		   		"发送了"+count+"包\n " +
		   	    " state: success\n\n"
		   	    ,logOpen);  
		   }else{
			   log.writeRecordLog("",logOpen);
		   }
	}
	public void process(){
		 while(number>0){
			 if(number == count){  //说明为第一次连接
				 System.out.println("run number connect");
				 connectHttp(URL);
			 }else if(isContinue == 1){   //说明不是持续连接
				 System.out.println("run continue connect");
				 connectHttp(URL);
			 }else{
				 //do nothing
			 }
			 try{
				if(header.getMethod().equals("get")){
				    doGet();
				}else{		
					doPost();
				}
			 }catch(IOException ex){
				ex.printStackTrace();
				break;
			 }
		}
		 stop = true;
		 try{
		     con.close();
		 }catch(IOException ex){
			 ex.printStackTrace();
		 }
	}
	public void setParameter(int number,boolean logOpen,int Continue){
		isContinue = Continue;
		this.logOpen = logOpen;
		this.number = number;
		count = number;
		URL = header.getUrl();
		stop = false;	
		this.run();
	}
}

⌨️ 快捷键说明

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