`

Java 访问网页

    博客分类:
  • Java
阅读更多
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/**
 * @author GaoFeng Chen
 */
public class AllResult {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        // 要访问的网页
        String urlStr = "http://xxxxxx";
        URL url;

        // 读文件,访问网页的引数放在一个文件中
        List<String> seqList = readFile("D:\\", "seq.txt");
        if (seqList.size() > 0) {

//  每次运行时将前一次的结果清空
            write("D:\\seqResult.txt", "OVERWRITE", new StringBuffer(
                    "the name of the sequence").append("                ")
                    .append("the result").toString());
            int i = 1;
            for (String seq : seqList) {
                System.out.println("The current row number is: " + i++);
                try {

            // 准备引数
                    Map parameters = setParameter(seq);

          // 获取引数
                    String parameter = getParameter(parameters);
                    byte[] b = parameter.getBytes();
                    url = new URL(urlStr);
                    URLConnection URLconnection = url.openConnection();
                    HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
                    httpConnection.setDoOutput(true);
                    // Read from the connection. Default is true.
                    httpConnection.setDoInput(true);
                    // Set the post method. Default is GET
                    httpConnection.setRequestMethod("POST");
                    // Post cannot use caches
                    httpConnection.setUseCaches(false);
                    OutputStream reqOut = null;
                    reqOut = httpConnection.getOutputStream();
                    reqOut.write(b, 0, b.length);
                    int responseCode = httpConnection.getResponseCode();
                    if (responseCode == HttpURLConnection.HTTP_OK) {
                        InputStream urlStream = httpConnection.getInputStream();

                        BufferedReader bufferedReader = new BufferedReader(
                                new InputStreamReader(urlStream));
                        String sCurrentLine = "";
                        while ((sCurrentLine = bufferedReader.readLine()) != null) {

               // 只把自己感兴趣的返回信息取出来
                            if (sCurrentLine.contains("XXXXX")) {

             // 将获取的数据写入到指定的文件

                             write("D:\\seqResult.txt", "APPEND",
                                     new StringBuffer(seq).append(":")
                                             .append(sCurrentLine)
                                             .toString());
                            }
                        }

                    } else {
                        System.err.println("FAIL");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("All of the sequence is over");
    }

    /**
     * 
     * @param sequence
     * @return
     */
    public static Map<String, String> setParameter(String sequence) {
        Map<String, String> parameters = new HashMap<String, String>();
        parameters.put("xxxx", "xx");
        parameters.put("xxxx", sequence);
        parameters.put("xxxx", "xx");
        parameters.put("xxxx", "xx");
        parameters.put("xxxx", "xx");
        parameters.put("xxxx", "xx");
        return parameters;
    }

    /**
     * 
     * @param parameters
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String getParameter(Map parameters)
            throws UnsupportedEncodingException {

        StringBuffer parameter = new StringBuffer();
        for (java.util.Iterator iter = parameters.entrySet().iterator(); iter
                .hasNext();) {
            Entry element = (Entry) iter.next();
            parameter.append(element.getKey().toString());
            parameter.append("=");
            parameter.append(URLEncoder.encode(element.getValue().toString(),
                    "UTF-8"));
            parameter.append("&");
        }
        if (parameter.length() > 0) {
            parameter = parameter.deleteCharAt(parameter.length() - 1);
        }
        return parameter.toString();

    }

    /**
     * reader the file
     * 
     * @param dataPath
     *            path
     * @param fileName
     *            fileName
     * @return data file
     */
    public static List<String> readFile(String dataPath, String fileName) {
        File file = new File(dataPath + fileName);
        BufferedReader reader = null;
        List<String> value = new ArrayList<String>();
        try {
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            while ((tempString = reader.readLine()) != null) {
                value.add(tempString);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        return value;
    }

    /**
     * 
     * @param strFileName
     * @param strWriteMode
     * @param lstOutputData
     * @return
     * @throws Exception
     */
    public static int write(String strFileName, String strWriteMode,
            String outputData) throws Exception {
        FileOutputStream fileOutputStream;
        OutputStreamWriter outputStreamWriter;
        BufferedWriter bufferedWriter;
        int countOutput;
        fileOutputStream = null;
        outputStreamWriter = null;
        bufferedWriter = null;
        countOutput = 0;
        try {
            if (strFileName == null)
                throw new IllegalArgumentException();
            if (strWriteMode == null)
                throw new IllegalArgumentException();
            if (!"OVERWRITE".equals(strWriteMode)
                    && !"APPEND".equals(strWriteMode))
                throw new IllegalArgumentException();
            if (outputData == null)
                throw new IllegalArgumentException();
            File file = new File(strFileName);
            if ("OVERWRITE".equals(strWriteMode))
                fileOutputStream = new FileOutputStream(file);
            else
                fileOutputStream = new FileOutputStream(file, true);
            outputStreamWriter = new OutputStreamWriter(fileOutputStream,
                    "MS932");
            bufferedWriter = new BufferedWriter(outputStreamWriter);
            // for (int i = 0; i < lstOutputData.size(); i++) {
            // String strLine = (String) lstOutputData.get(i);

            bufferedWriter.write(outputData);
            bufferedWriter.write("\n");
            countOutput++;
            // }

        } catch (Exception ex) {

        }

        closeOutputStream(fileOutputStream, outputStreamWriter, bufferedWriter);
        return countOutput;
    }

    /**
     * 
     * @param fileOutputStream
     * @param outputStreamWriter
     * @param bufferedWriter
     */
    private static void closeOutputStream(FileOutputStream fileOutputStream,
            OutputStreamWriter outputStreamWriter, BufferedWriter bufferedWriter) {
        if (bufferedWriter != null)
            try {
                bufferedWriter.close();
            } catch (IOException ex) {
            }
        if (outputStreamWriter != null)
            try {
                outputStreamWriter.close();
            } catch (IOException ex) {
            }
        if (fileOutputStream != null)
            try {
                fileOutputStream.close();
            } catch (IOException ex) {
            }
    }
}
分享到:
评论

相关推荐

    java模拟浏览器访问网站

    用java模拟访问浏览网站的代码,可以输出各种网页属性,以及html源代码

    Java中访问页面的HttpClient类

    在Java编程中,访问网页内容是一项常见的任务,通常我们使用HttpClient类来实现这一功能。HttpClient是Apache HttpClient库的核心类,它提供了丰富的API用于构建复杂的HTTP客户端应用。这篇博客(原文链接:...

    JAVA 统计网站的访问量PV,UV

    在IT行业中,统计网站的访问量是...总之,通过Java、Spring和MySQL的结合,我们可以构建一个有效的访问量统计系统,为网站运营提供关键的数据支持。同时,还需要注意隐私保护和数据安全,遵守相关的法规和最佳实践。

    java 使用URL访问网页

    在Java编程语言中,访问网页是一项基本操作,通常用于数据抓取、自动化测试或网络通信。本篇文章将详细讲解如何使用Java的内置类`java.net.URL`和相关API来实现这个功能。 首先,我们需要理解`URL`(Uniform ...

    java代理访问网页

    java通过代理访问网页内容,自己可以学习下

    java访问https网址下载文件

    以上就是使用Java访问HTTPS网址并下载文件的基本步骤,包括处理可能需要的证书下载。需要注意的是,实际生产环境中,为了安全起见,不应使用信任所有证书的策略,而是应该确保服务器的证书被正确配置并由受信任的CA...

    java禁止直接url访问图片

    标题“Java禁止直接URL访问图片”涉及到的是网络资源保护和权限控制的问题,主要知识点包括: 1. **HTTP请求与响应**: 当用户通过浏览器或其他客户端工具输入一个URL来访问图片时,实际上是发送了一个HTTP GET...

    Java Web登录自动填入用户名密码

    这个功能允许用户在选择“记住用户名和密码”后,下一次访问网站时,系统能自动填充登录表单,提供便捷的用户体验。这个过程涉及到浏览器存储用户信息的方式,主要使用到的技术是Cookie。 Cookie是一种在客户端存储...

    java基于xml实现网站访问量统计

    Java基于XML实现网站访问量统计是一种常见的Web应用监控方法,主要通过解析XML文件来记录和分析网站的访问数据。在不改动数据库的情况下,这种技术提供了一种轻量级且易于集成的解决方案。以下是对这个主题的详细...

    java实现读取证书访问https接口

    在Java编程中,访问HTTPS(安全超文本传输协议)接口通常涉及到处理数字证书,这是为了确保数据传输的安全性。HTTPS通过使用SSL/TLS协议来加密通信,而证书是该协议的一部分,用于验证服务器的身份。本篇文章将深入...

    java访问网络资源

    URL是互联网上的资源地址,它可以是网页、文件、图片等任何可以通过网络访问的资源。创建一个URL对象,你可以提供一个字符串形式的URL地址,如下所示: ```java URL url = new URL("http://example.com/resource");...

    Java实现网页截图技术

    ### Java实现网页截图技术:深度解析与代码示例 在当今的互联网时代,网页截图技术在许多场景下都有着广泛的应用,如自动化测试、数据分析、页面快照保存等。本文将深入探讨如何使用Java来实现网页截图,从原理到...

    java统计高并发首页访问量,记录客户登录信息

    在Java开发中,统计高并发环境下首页访问量并记录客户登录信息是一项常见的需求,这涉及到系统性能优化、数据持久化以及并发控制等多个方面。在这个项目中,开发框架选择了Spring,这是一个广泛使用的Java企业级应用...

    使用java快速判断网页链接是否有效

    ### 使用Java快速判断网页链接是否有效 在互联网应用开发中,经常会遇到需要验证网页链接有效性的情况。例如,在爬虫程序中需要确保所抓取的链接是有效的,或者是在网站维护过程中检查外部链接的有效性等。本文将...

    java模拟微信浏览器访问.rar

    - 微信浏览器访问的网页可能使用HTTPS协议,Java需要配置信任的证书库,或使用忽略证书验证的模式(仅限测试环境)。 7. **重定向处理**: - 遵循HTTP的重定向规则,自动处理3xx状态码的响应。 8. **超时设置**...

    Java抓取https网页数据

    Java抓取https网页数据,解决peer not authenticated异常。导入eclipse就能运行,带有所用的jar包(commons-httpclient-3.1.jar,commons-logging.jar,httpclient-4.2.5.jar,httpcore-4.2.4.jar)

    简单Java网站计数器程序

    在本文中,我们将深入探讨如何使用Java和Struts 1.2框架来实现一个简单的网站计数器程序。首先,我们需要了解Java、Struts以及它们在构建Web应用程序中的作用。 Java是一种广泛使用的面向对象的编程语言,具有跨...

    网站统计在线人数,当前年、月、日访问量JAVA代码

    在网站运营过程中,统计在线人数和访问量是至关重要的数据指标,它们可以帮助我们了解网站的活跃度、用户行为以及优化方向。本主题将详细介绍如何使用Java编程语言来实现这一功能,特别是关注当前年、月、日的访问量...

    非常完美Java实现年、月、日、周访问量统计

    在IT行业中,尤其是在数据分析和网站运营领域,统计访问量是一项至关重要的任务。本文将深入探讨如何使用Java语言优雅地实现年、月、日、周访问量的统计。这个功能可以帮助我们更好地理解用户行为,优化产品,并制定...

Global site tag (gtag.js) - Google Analytics