📄 commonhttphandler.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 + -