`
OpenMind
  • 浏览: 180190 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用Java模拟Http请求

阅读更多
1),利用httpclient4.× 写一个http的客户端,模拟浏览器请求,
public void post(List<NameValuePair> payload) throws  Exception{  
        HttpPost post = new HttpPost(uri);  
        HttpEntity result = null;  
        try {  
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(payload,  
                    charset);  
            post.setEntity(entity);  
            if (LOG.isDebugEnabled()) {  
                LOG.debug("sending:" + payload);  
            }  
  
            HttpResponse response = _httpClient.execute(post);  
            StatusLine statusLine = response.getStatusLine();  
            if (statusLine.getStatusCode() != HttpStatus.SC_OK) {  
                result = response.getEntity();  
                StringBuilder msg = new StringBuilder();  
                msg.append("http response with code "  
                        + statusLine.getStatusCode());  
                msg.append("\n");  
                msg.append("post request: " + post.getURI());  
                msg.append("\n");  
                msg.append(statusLine.getReasonPhrase());  
                if (result != null) {  
                    msg.append("\n\n");  
                    msg.append(EntityUtils.toString(result, "UTF-8"));  
                    msg.append("\n\n");  
                }  
                throw new UmcException(msg.toString());  
            }  
            if (response.getEntity() != null) {  
                BufferedReader reader = new BufferedReader(  
                        new InputStreamReader(  
                                response.getEntity().getContent(), "UTF-8"));  
                String line = null;  
                while ((line = reader.readLine()) != null) {  
                    if (line.indexOf("success") < 0)  
                        System.out.println(line);  
                }  
            }  
        } finally {  
            if (result != null)  
                try {  
                    EntityUtils.consume(result);  
                } catch (IOException e) {  
                }  
            post.abort();  
        }  
    }  


uri是请求的地址,charset是编码“UTF-8”,List<NameValuePair>就是表单参数集
ClientConnectionManager     ccManager = new ThreadSafeClientConnManager();  
HttpClient      _httpClient = new DefaultHttpClient(ccManager); 


2) 采用JDK的HttpConnection构造http客户端,
////发送  
    HttpURLConnection conn = null;  
    try {  
        URL url = new URL(Your_URL);  
        conn = (HttpURLConnection) url.openConnection();  
        conn.setRequestMethod("POST");  
        conn.setRequestProperty("Content-Type",  
                "application/x-www-form-urlencoded");  
        conn.setUseCaches(false);  
        conn.setDoOutput(true);  
        OutputStreamWriter osw = new OutputStreamWriter(  
                conn.getOutputStream());  
        StringBuffer sb = new StringBuffer();  
        addPair(sb, "p1", "p1value");  
        addPair(sb, "p2", "p2value");  
        osw.write(sb.substring(0, sb.length() - 1));  
        osw.flush();  
        BufferedReader reader = new BufferedReader(  
                new InputStreamReader(conn.getInputStream()));  
        String line = null;  
        sb = new StringBuffer();  
        while ((line = reader.readLine()) != null) {  
            sb.append(line);  
        }  
        line = sb.toString();  
        // 处理返回的字符串line  
        return;  
        ////  
    } catch (IOException e) {  
        // handle e  
    } finally {  
        if (conn != null)  
            conn.disconnect();  
    }///发送结束  

addPair方法:
public static void addPair(StringBuffer sb, String name, String value) {  
    if (value == null) {  
        return;  
    }  
    sb.append(name);  
    sb.append("=");  
    sb.append(value);  
    sb.append("&");  
}  


分享到:
评论
1 楼 飞龙8805 2013-03-07  
Java模拟HTTP的Get和Post请求(增强)
http://lavasoft.blog.51cto.com/62575/175911

相关推荐

    使用Java模拟http请求.rar

    本教程将详细讲解如何使用Java来模拟HTTP请求。 首先,Java中常用的库有HttpURLConnection、Apache HttpClient和OkHttp。这里我们将主要讨论HttpURLConnection,它是Java标准库的一部分,无需额外引入依赖。使用...

    java模拟post请求

    java模拟客户端向服务器发送post请求

    JAVA模拟网页发送请求

    这些需求可以通过模拟HTTP请求的方式实现。本篇文章将详细介绍如何使用Java语言来模拟发送网页请求,并特别关注POST请求及Cookie的处理。 #### 二、模拟发送GET请求 首先,我们来看看如何使用Java的`java.net.URL`...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    在Java编程中,有时我们需要模拟浏览器发送HTTP请求,例如调用外部接口或API。`HttpURLConnection`是Java标准库提供的一种轻量级的HTTP客户端,它允许我们在后台代码中发送GET和POST请求。本篇文章将深入讲解如何...

    Java 模拟cookie登陆简单操作示例

    我们可以使用 Java 语言来发送 HTTP 请求,并将 Cookie 信息写入到 HTTP 头部中,以便模拟用户的登陆行为。 Java 模拟 Cookie 登陆的实现 下面是一个简单的 Java 模拟 Cookie 登陆的示例代码: ```java import ...

    java发送http请求工具类

    Java中发送HTTP请求的方式有很多,如使用`java.net.HttpURLConnection`、`java.net.URL`、Apache HttpClient库或OkHttp库。本工具类主要基于`HttpURLConnection`,因为它是Java标准库的一部分,无需额外依赖,且能...

    模拟Http请求

    主要分为以下几个部分:Http请求的基本概念、模拟Http请求的必要性、Apache HttpClient库的介绍及其在Java中的使用方法。 ### Http请求基本概念 Http(Hypertext Transfer Protocol)是用于从WWW服务器传输超文本...

    javaHttp异步请求

    在实际开发中,这样的测试文件通常包含各种HTTP请求和响应的模拟数据,用于确保异步请求和流式处理功能的正确性。 总之,Java中的HTTP异步请求通过`HttpAsyncClients`和自定义的回调处理类,如`...

    java模拟http请求登陆抓取海投网信息

    在Java编程中,模拟HTTP请求是一项常见的任务,尤其在网页抓取、自动化测试以及网络数据获取等场景下。本项目涉及的关键技术点是利用HTTP客户端库进行登录操作,并抓取海投网的数据,随后将这些信息存储到MySQL...

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

    这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...

    java模拟http请求的错误问题整理

    Java 模拟 HTTP 请求的错误问题整理 Java 模拟 HTTP 请求是一种常见的编程技术,然而在实际应用中,我们经常会遇到各种错误问题。下面是对 Java 模拟 HTTP 请求的错误问题的整理和分析。 问题一:Illegal ...

    java发起http请求提交表单

    ...本文将详细介绍如何使用Java语言来构建一个可以提交表单数据的HTTP POST请求。...从构建HTML表单到使用不同的库来模拟HTTP请求,再到处理表单参数,每一步都需要仔细考虑以确保数据的安全性和准确性。

    Java实现的Https请求工具类

    3. **创建HttpURLConnection对象**:使用`java.net.URL`类打开与目标服务器的连接,并通过`openConnection()`方法获取HttpURLConnection对象。然后,将Socket工厂设置为HTTPS连接的套接字工厂。 ```java URL url = ...

    andriod 模拟Http请求

    在Android开发中,模拟HTTP请求是一项基础且重要的任务,它允许应用与远程服务器进行数据交互,获取或发送信息。本文将深入探讨如何在Android平台上实现HTTP请求,主要涉及以下几个方面: 1. **HTTP协议基础**:...

    java模拟HTTP传送

    java墨迹HTTP请求传送图片。其中服务端部分可以另找我下载

    JAVA模拟http上传文件_代码男_新浪博客

    当我们需要实现文件上传功能时,可以通过模拟HTTP请求来完成。这个过程通常涉及到表单提交、Multipart/form-data编码、HttpClient或者HttpURLConnection类的使用。下面将详细探讨这些知识点。 1. **HTTP POST请求**...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在示例代码中,我们使用HttpGet对象来发送POST请求,并指定请求的URL、请求头和请求体。 使用HttpClient发送POST请求可以帮助我们与HTTPS服务器进行交互,但需要注意证书验证过程。使用X509TrustManager可以忽略...

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    在Java编程中,处理HTTP请求是一项常见的需求,特别是在与Web服务进行交互时。Apache HttpClient库提供了一种强大的方法来执行HTTP请求,无论是简单的GET请求还是复杂的带有表单参数的POST请求。本文将通过具体的...

    java 模拟登录(含验证码)

    1. **构建HTTP请求**:使用像`HttpURLConnection`或者第三方库如`Apache HttpClient`或`OkHttp`,创建一个指向登录页面的POST请求。你需要设置请求头,比如`Content-Type`通常设为`application/x-...

Global site tag (gtag.js) - Google Analytics