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

📄 chtml_trans.java

📁 chtml转换模块
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.htmlparser.Node;
import org.htmlparser.lexer.Lexer;
import org.htmlparser.nodes.TagNode;

public class chtml_trans extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2860876121816136140L;

	public static String host_site = "";
	public static String img_path = "";

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String myURL = ""; // 获取HTTP 请求信息
		myURL = request.getParameter("myURL");
		
		if (myURL == null || myURL.equals("")) {
			myURL = "did not get anything";
		} else {

		}
		// 生成 HTTP 响应。

		response.setCharacterEncoding("GB2312");
//		response.setContentType("text/html;charset=GB2312");
		Enumeration headerNames = request.getHeaderNames();
	/*	String header = "method:" + request.getMethod() + "/" + "RequestURI:"
				+ request.getRequestURI() + "/" + "Protocol:"
				+ request.getProtocol();
		response.setHeader("method", request.getMethod());
		response.setHeader("requesturi", request.getRequestURI());
		response.setHeader("protocol", request.getProtocol());
		System.out.println("head---------------" + header);*/
		System.out.println("url---------------" + myURL);
			while (headerNames.hasMoreElements()) {
			String headerName = (String) headerNames.nextElement();
			// if(headerName.equals("user-agent")){
			// response.setHeader("user-agent",user_agent);
			// // System.out.println("/"+headerName+":"+user_agent);
			// }else {
			response.setHeader(headerName, request.getHeader(headerName));
			System.out.println("/"+headerName+":"+request.getHeader(headerName));
			// }

		}
       String ua=request.getHeader("user-agent");
       String phoneNo=request.getHeader("x-up-calling-line-id");
		if (myURL.startsWith("http://") == false) {
			myURL = "http://" + myURL;
		}
		java.net.URL l_url = new java.net.URL(myURL);
//		host_site = l_url.getHost()+l_url.getPath().substring(0,l_url.getPath().lastIndexOf("/")+1);
		host_site = l_url.getHost();
		img_path=l_url.getPath().substring(0,l_url.getPath().lastIndexOf("/")+1);
		String html_content = new String("");
		//请求资源
       java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url
		.openConnection();
l_connection.setRequestProperty("user-agent", ua);
l_connection.setRequestProperty("x-up-calling-line-id", phoneNo);
l_connection.connect();
System.out.println("===================="+l_connection.getContentType());
String content_type=l_connection.getContentType();
content_type=content_type.replaceAll("audio/mp3", "audio/vnd.iacj.mp3");
response.setContentType(content_type);
InputStream in = l_connection.getInputStream();
try {
// 当请求图片时
if(l_connection.getContentType().indexOf("image")!=-1)

{
				
				OutputStream toClient = response.getOutputStream();
				ByteArrayOutputStream baos = new ByteArrayOutputStream();

				int len;
				while ((len = in.read()) != -1) {
					baos.write(len);
				}
				byte[] data = baos.toByteArray();
				/*if (data.length > 10240) {
				// 如果图片大于10k,画个空白图给用户
				BufferedImage image = new BufferedImage(1, 1,
							BufferedImage.TYPE_INT_RGB);
					Graphics g = image.getGraphics();
					g.setColor(Color.white);
					g.fillRect(0, 0, 1, 1);
					g.setColor(Color.white);
					g.drawOval(0, 0, 1, 1);
					response.setContentType("image/jpeg");
					JPEGImageEncoder encoder = JPEGCodec
							.createJPEGEncoder(toClient);
					encoder.encode(image);
					//返回一个1x1x2的GIF图片的字节值
					byte[] blank_img={71,73,70,56,57,97,1,0,1,0,-128,0,0,0,0,0,0,0,0,33,-7,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59};
					toClient.write(blank_img);
				} else {
*/
					toClient.write(data); // 输出数据
//				}
				System.out.println("image finish:" + myURL);
				toClient.close();
				baos.close();
				in.close();
			}
//当请求视频音频时
else if (l_connection.getContentType().indexOf("audio")!=-1
		||l_connection.getContentType().indexOf("vnd.iacj.smc")!=-1
		||l_connection.getContentType().indexOf("video")!=-1)
{
				
				OutputStream toClient = response.getOutputStream();
				ByteArrayOutputStream baos = new ByteArrayOutputStream();

				int len;
				while ((len = in.read()) != -1) {
					baos.write(len);
				}
				byte[] data = baos.toByteArray();
     			toClient.write(data); // 输出数据
			 	System.out.println("audio finish:" + myURL);
				toClient.close();
				baos.close();
				in.close();
			}


else {// 其他请求,比如页面请求

				html_content = getHtml(in);
				if (html_content.startsWith("错误") == false) {
					html_content = dealFrame(ua,phoneNo,html_content);
					html_content = dealTR(html_content);
					html_content = dealImg(html_content);
//					System.out.println("--------------------------------------------------------");
//					System.out.println(html_content);
				}
				PrintWriter out = response.getWriter();
				out.write(html_content);
				out.flush();
				out.close();
				// System.out.println(html_content);

			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}

	}

	/*
	 * 取得指定url的内容
	 */
	public static String getHtml(InputStream l_urlStream) {
		// 注意必须用new String()新建,不然string长度只有65534
		String sCurrentLine = new String("");
		String sTotalString = new String("");
		try {

			java.io.BufferedReader l_reader = new java.io.BufferedReader(
					new java.io.InputStreamReader(l_urlStream, "8859_1"));
			while ((sCurrentLine = l_reader.readLine()) != null) {
//				System.out.println("");
//				System.out.println(sCurrentLine);
				sTotalString += sCurrentLine;
			}
			// 用找到的字符集,来新建输入流
			Pattern p = Pattern.compile("charset[ \t\n]*=[ \t\n]*([^>\"$|^>/$]+)",Pattern.CASE_INSENSITIVE);
			Matcher m = p.matcher(sTotalString);
			if (m.find()) {
//				System.out.print(m.group()+"================================");
				String charset = m.group().trim().substring(8);
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				byte[] data = baos.toByteArray();
				data = sTotalString.getBytes("8859_1");
				String result = new String(data, charset);
				return result;
			}
			else{
				
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				byte[] data = baos.toByteArray();
				data = sTotalString.getBytes("8859_1");
				String result = new String(data, "GB2312");
				return result;
			}
			
		} catch (java.io.FileNotFoundException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
			System.out.println("找不到网页:");
			System.out.println("请返回");
			return "错误:找不到网页,请返回!";
		} catch (Exception e) {
			e.printStackTrace();
			return e.getMessage();
		}

	}

	//   
	
	/*
	 * 根据url,取得网页内容
	 */
	public static String getHtml_by_url(String ua,String phoneNo,String myURL) {
		// 注意必须用new String()新建,不然string长度只有65534
		String sCurrentLine = new String("");
		String sTotalString = new String("");
		try {
			java.io.InputStream l_urlStream;

			if (myURL.startsWith("http://") == false) {
				myURL = "http://" + myURL;
			}
			java.net.URL l_url = new java.net.URL(myURL);
			/*String configstr = getConfigFile();
			String strProxy = "";
			String strPort = "";
			if (!configstr.equals("")) {
				strProxy = getValue(configstr, "proxyHost");

⌨️ 快捷键说明

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