`
li_sir
  • 浏览: 115389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java模拟http get和post 提交

    博客分类:
  • java
阅读更多
使用httpclient工具包commons-httpclient-3.1.jar,依赖commons-logging-1.0.4.jar和commons-codec-1.3.jar。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;

/**
 * 
 * 
 * <p>Title:HttpTookitEnhance</p>
 * <p>Description: httpclient模拟http请求,解决返回内容乱码问题</p>
 * <p>Copyright: Copyright (c) 2010</p>
 * <p>Company: </p>
 * @author libin
 * @version 1.0.0
 */
public class HttpTookitEnhance
{
      /** 
       * 执行一个HTTP GET请求,返回请求响应的HTML 
       * 
       * @param url                 请求的URL地址 
       * @param queryString 请求的查询参数,可以为null 
       * @param charset         字符集 
       * @param pretty            是否美化 
       * @return 返回请求响应的HTML 
       */
      public static String doGet ( String url, String queryString, String charset, boolean pretty )
      {
            StringBuffer response = new StringBuffer();
            HttpClient client = new HttpClient();
            HttpMethod method = new GetMethod(url);
            try
            {
                  if ( queryString != null && !queryString.equals("") )
                        //对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串 
                        method.setQueryString(URIUtil.encodeQuery(queryString));
                  client.executeMethod(method);
                  if ( method.getStatusCode() == HttpStatus.SC_OK )
                  {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));
                        String line;
                        while ( ( line = reader.readLine() ) != null )
                        {
                              if ( pretty )
                                    response.append(line).append(System.getProperty("line.separator"));
                              else
                                    response.append(line);
                        }
                        reader.close();
                  }
            }
            catch ( URIException e )
            {
            }
            catch ( IOException e )
            {
            }
            finally
            {
                  method.releaseConnection();
            }
            return response.toString();
      }

      /** 
       * 执行一个HTTP POST请求,返回请求响应的HTML 
       * 
       * @param url         请求的URL地址 
       * @param params    请求的查询参数,可以为null 
       * @param charset 字符集 
       * @param pretty    是否美化 
       * @return 返回请求响应的HTML 
       */
      public static String doPost ( String url, Map<String, String> params, String charset, boolean pretty )
      {
            StringBuffer response = new StringBuffer();
            HttpClient client = new HttpClient();
            HttpMethod method = new PostMethod(url);
            //设置Http Post数据 
            if ( params != null )
            {
                  HttpMethodParams p = new HttpMethodParams();
                  for ( Map.Entry<String, String> entry : params.entrySet() )
                  {
                        p.setParameter(entry.getKey(), entry.getValue());
                  }
                  method.setParams(p);
            }
            try
            {
                  client.executeMethod(method);
                  if ( method.getStatusCode() == HttpStatus.SC_OK )
                  {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));
                        String line;
                        while ( ( line = reader.readLine() ) != null )
                        {
                              if ( pretty )
                                    response.append(line).append(System.getProperty("line.separator"));
                              else
                                    response.append(line);
                        }
                        reader.close();
                  }
            }
            catch ( IOException e )
            {
            }
            finally
            {
                  method.releaseConnection();
            }
            return response.toString();
      }

      public static void main ( String [] args )
      {
            String y = doGet("http://video.sina.com.cn/life/tips.html", null, "GBK", true);
            System.out.println(y);
      }

}
分享到:
评论

相关推荐

    Java 模拟Ajax POST GET 提交代码

    Java 模拟Ajax POST GET 提交代码,实测很好用。

    java后台实现 get post 提交.zip

    本资料"java后台实现 get post 提交.zip"可能包含了实现这些功能的代码示例和详细解释。 1. GET请求: GET请求主要用于从服务器获取资源,它将参数附加到URL后面。在Java中,我们通常使用`java.net.URL`和`java.net...

    后台模拟发送GET和POST请求

    使用HttpClient模拟GET和POST请求,主要涉及以下几个步骤: 1. 创建HttpClient实例:这是所有操作的基础,通过`HttpClientBuilder`或`HttpClients`类可以创建HttpClient对象。 ```java CloseableHttpClient ...

    JAVA-用HttpClient来模拟浏览器GET,POST.docx

    JAVA使用HttpClient模拟浏览器GET、POST请求 在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化...

    模拟表单post提交

    总的来说,Java中的HttpClient库是模拟表单POST提交的常用工具,它提供了丰富的API来创建和执行HTTP请求,处理各种类型的响应,是Java开发者在网络编程中的得力助手。通过熟练掌握HttpClient的使用,开发者可以更...

    Java模拟get/post登陆(含验证码)

    本篇文章将深入探讨如何使用Java模拟GET/POST登录,特别是涉及验证码处理的情况。我们将主要关注Httpclient库的使用,以及可能涉及到的图像识别技术(OCR)。 首先,让我们了解一下HTTP的基本概念。HTTP是超文本...

    Java模拟HTTP的Get和Post请求

    NULL 博文链接:https://xieke90.iteye.com/blog/2259953

    Java 模拟 get、post 向网站提交数据(HttpTest.java)

    运行环境jdk1.6,使用时,根据实际情况修改: map.put("userId", "320"); String temp = HttpTest.doPost("http://www.test.com/submit.jsp", map, "GBK");

    HttpUtils Java get post 工具类

    总结,"HttpUtils Java get post 工具类"是用于简化Java中HTTP GET和POST请求的实用工具,它还支持小文件的发送。通过这个工具类,开发者可以快速地进行网络请求,而无需关注底层HTTP连接的复杂性。同时,通过测试类...

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

    ### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 #### 一、概述 在Java编程中,处理HTTP请求是一项常见的需求,特别是在与Web服务进行交互时。Apache HttpClient库提供了一种强大的方法来执行HTTP...

    Java发送post,get请求

    java模拟HTTP发送post和get请求工具类,使用httpClient类

    service_java接口远程调用_get、post、带参数远程调用_

    本篇文章将详细讲解如何使用Java实现GET和POST方法的远程接口调用,以及如何处理带有参数的情况。 首先,我们要了解HTTP协议中的GET和POST请求。GET请求通常用于获取资源,其参数包含在URL中;而POST请求常用于提交...

    HttpClient模拟get,post请求并发送请求参数(json等)

    它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...

    《转》Java模拟HTTP的Get和Post请求

    NULL 博文链接:https://tujunlan.iteye.com/blog/1997745

    java 发送get ,post请求,高效便捷,并发性强,原生代码

    java发送get,post请求,可以实现与后台交互,代码便捷高效,是原生代码,支持并发性;代码结构清晰易懂,容易上手;

    用HttpClient来模拟浏览器的GET,POST

    1. **模拟GET请求**: 使用HttpClient进行GET请求非常简单。首先,需要创建一个HttpClient实例,然后创建HttpGet对象,设置其目标URL。接着,将HttpGet对象放入HttpClient执行的执行方法中,例如execute()。最后,...

    如何用selenium封装post参数提交示例

    封装POST请求的关键在于模拟表单提交或者使用JavaScript执行AJAX请求。以下是一个简单的例子,展示如何使用Selenium来封装POST参数: ```python from selenium import webdriver from selenium.webdriver.common....

    java后端请求HTTP需要用到的jar包及其测试方法(get和post)

    Apache HttpClient库是一个强大的工具,它允许开发者方便地执行HTTP请求,包括GET和POST。本篇将详细介绍如何利用HttpClient进行HTTP请求,并涵盖相关jar包的作用及测试方法。 首先,我们来看一下提供的压缩包中的...

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

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

Global site tag (gtag.js) - Google Analytics