為解決項目中,需要進行的封包對比測試工作,寫了一個小的比對工具,做以下記錄,友善以後查閱學習,涉及到了http用戶端和服務端的建構

用戶端核心代碼:(webservice)
public static String webServiceRequest(String url, String sysParam,
String busiParam) throws Exception {
/** 建立用戶端 **/
WsAccessStub stub = new WsAccessStub(url);
org.apache.axis2.client.Options o = stub._getServiceClient().getOptions();
o.setTimeOutInMilliSeconds();
/** 調用服務 **/
WsAccessStub.Service service = new WsAccessStub.Service();
service.setSysParam(sysParam);
service.setBusiParam(busiParam);
System.out.println("服務調用中...\n");
WsAccessStub.ServiceResponse rsp = stub.service(service);
String secBusiParams = rsp.get_return();
// 傳回結果解密,測試環境暫時不需要
return secBusiParams;
}
服務端核心代碼:(http,socket實作)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.util.HashMap;
import java.util.Map;
import com.asiainfo.simulationTest.respserver.util.SRVUtil;
public class HTTPServer {
private static final int port = ;
private ServerSocket serverSocket = null;
public HTTPServer() throws IOException {
serverSocket = new ServerSocket(port);
System.out.println("HTTPServer startup OK...");
}
public String getRequest(Socket socket) throws IOException {
InputStream socketIn = socket.getInputStream();
int size = socketIn.available();
byte[] requestBuff = new byte[size];
socketIn.read(requestBuff);
String rtnstr = new String(requestBuff,"utf-8");
return rtnstr;
}
/**
* 解析出URL
*/
public String getURI(String request) {
String firstLine = request.substring(, request.indexOf("\r\n"));
String[] parts = firstLine.split(" ");
return parts[];
}
/**
* 解析出業務參數
*/
public String getIndata(String request) {
String[] parts = request.split("\r\n");
return parts[];
}
public String getContentType(String URI) {
/* 決定HTTP響應正文的類型 */
String contentType;
if (URI.indexOf("html") != - || URI.indexOf("htm") != -)
contentType = "text/html";
else if (URI.indexOf("jpg") != - || URI.indexOf("jpeg") != -)
contentType = "image/jpeg";
else if (URI.indexOf("gif") != -)
contentType = "image/gif";
else
contentType = "application/json; charset=UTF-8";
return contentType;
}
public InputStream getResponseContent(String URI)
throws FileNotFoundException {
InputStream htmlInputStream = new FileInputStream(
System.getProperty("user.dir") + "/WebRoot" + URI);
return htmlInputStream;
}
public String getResp(String contentType,String sourceId,String flowCode,String inData) {
/* 建立HTTP響應結果 */
// HTTP響應的第一行
reponseHandler rep = new reponseHandler();
String responseFirstLine = "HTTP/1.1 200 OK\r\n";
// HTTP響應頭
String responseHeader = "Content-Type:" + contentType + "\r\n\r\n";
// HTTP響應出參
String outparam = new String();
try {
outparam = rep.getRespParam(sourceId,flowCode,inData);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return responseFirstLine + responseHeader+ outparam;
}
public void service() throws InterruptedException {
while (true) {
Socket socket;
Map inParam = new HashMap();
try {
socket = serverSocket.accept();
String request = getRequest(socket);
System.out.println("HttpServer receive request:\n" + request);
String URI = getURI(request);
String inData = getIndata(request);
inParam = SRVUtil.URLRequest(URI);
String flowCode = inParam.get("BUSICODE").toString();
String sourceId = inParam.get("SOURCEID").toString();
String contentType = getContentType(URI);
OutputStreamWriter outsw = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
BufferedWriter out = new BufferedWriter(outsw);
String reponseParam = getResp(contentType,sourceId,flowCode,inData);
out.write(reponseParam);
out.flush();
outsw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException,
InterruptedException {
HTTPServer httpServer = new HTTPServer();
httpServer.service();
}
}