📄 commonhttpparser.java
字号:
package com.ct.hotweb.util;
import java.io.*;
import java.util.*;
public class CommonHttpParser implements HttpParser {
public CommonHttpParser() {
}
/**
* 根据所提供的模板,分析获取的html源文件
* @param httpContent String
* @param partKey String
* @param block BlockAnalyzer
* @throws Exception
* @return ArrayList
*/
public ArrayList parse(String httpContent,
String partKey,
BlockAnalyzer block) throws Exception {
httpContent = prepare(httpContent, partKey);
ArrayList vars = new ArrayList();
int posStart = -1, posEnd = 0;
while ((posStart = httpContent.indexOf(partKey, posStart + 1)) >= 0) {
String blockStr = "";
posEnd = httpContent.indexOf(partKey, posStart + 1);
if (posEnd >= 0) {
blockStr = httpContent.substring(posStart + partKey.length(), posEnd);
} else {
blockStr = httpContent.substring(posStart + partKey.length(), httpContent.length() - 1);
}
HashMap hm = parseBlock(blockStr, block);
if (0 != hm.size()) {
vars.add(hm);
}
}
/*
String blockStr = httpContent.substring(posStart + partKey.length(), httpContent.length() - 1);
HashMap hm = parseBlock(blockStr, block);
if (0 != hm.size()) {
vars.add(hm);
}*/
return vars;
}
String prepare(String httpContent, String partKey) {
BufferedReader br = new BufferedReader(new StringReader(httpContent));
StringBuffer sb = new StringBuffer();
String line;
try {
while ((line = br.readLine()) != null)
sb.append(line.trim()).append("\n");
br.close();
httpContent = sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
//ignor the first part
int pos = httpContent.indexOf(partKey);
if (pos < 0) return "";
httpContent = httpContent.substring(pos, httpContent.length() - 1);
return httpContent;
}
/**
* 分析块
* @param blockStr String
* @param block BlockAnalyzer
* @return HashMap
*/
HashMap parseBlock(String blockStr, BlockAnalyzer block) {
HashMap result = new HashMap();
int i = 0, posStart, posEnd = 0;
for (i = 0; i < block.getVars().size(); i ++) {
String str1 = (String)(block.getStrings().get(i));
String str2 = (String)block.getStrings().get(i + 1);
String varValue = "";
posStart = blockStr.indexOf(str1, posEnd) + str1.length();
if (posStart < str1.length()) {
result.clear();
return result;
}
posEnd = blockStr.indexOf(str2, posStart);
if (posEnd < 0) {
result.clear();
return result;
};
varValue = blockStr.substring(posStart, posEnd);
VariableInfo vi = (VariableInfo)(block.getVars().get(i));
String varsName = vi.getVariableName();
result.put(varsName, varValue);
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -