方法一:
(原始办法)
/*
 * @remark: 获取用户资料
 * @param: url发送数据的URL
 * @param: param获取用户资料的参数
 * @return: 获取用户资料状态信息
 */
 String GetUser(String url, String param)
 {
  URL httpurl = null;
  HttpURLConnection httpConn = null;
  String line = "";
   try
   {
     httpurl = new URL(url);
     httpConn = (HttpURLConnection)httpurl.openConnection();  
     httpConn.setRequestMethod("POST");    //默认是post
     httpConn.setDoOutput(true);
     httpConn.setDoInput(true); 
     PrintWriter outs = new PrintWriter(httpConn.getOutputStream());
     outs.print(param);
     outs.flush();
     outs.close();   
     BufferedReader  in = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));  
     while ((line = in.readLine()) != null)
    {
       if (line.indexOf("#") == -1)
        continue;
      return line;
    }
    in.close();
 
   }catch(Exception e)
   {
     return line;
   }
   finally
   {
     if(httpConn!=null)
       httpConn.disconnect();
   }
  return line;
 }
该方法写的很简单,不够完善。
方法二:
<%@ page language="java"  pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> 
  <body>
    <%
        String name1=request.getParameter("name1");
        if(null!=name1){
            out.print(name1);out.print("<br>");
        }
        String name2=request.getParameter("name2");
        if(null!=name1){
            out.print(name2);out.print("<br>");
        }
    %>
  </body>
</html>


接下来就就是我们的程序部分了:

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
        HttpClient client = new HttpClient();
        HttpMethod httpPost =getPostMethod();
        //HttpMethod httpPost =getGetMethod();
        client.getHostConfiguration().setHost("localhost", 8080, "http");
        try {
            int status = client.executeMethod(httpPost);
            if(status==200)
            {
                System.out.println(httpPost.getResponseBodyAsString());
            }
            else
            {
                System.out.println("页面请求返回值为:"+status);
            }
        } catch (HttpException e) {
            e.printStackTrace(System.err);
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }finally{
            httpPost.releaseConnection();
        }
    }
    /**
     * 使用POST方式提交数据
     * @return
     */
    private static HttpMethod getPostMethod(){
        PostMethod post = new PostMethod("/PostTest/index.jsp");
        NameValuePair simcard = new NameValuePair("name1","1330227");
        NameValuePair simcard2 = new NameValuePair("name2","kjasdfklalsf");
        post.setRequestBody(new NameValuePair[] { simcard,simcard2});
        return post;
    }
    /**
     * 使用GET方式提交数据
     * @return
     */
    private static HttpMethod getGetMethod(){
        return new GetMethod("/PostTest/index.jsp?name1=1330227&name2=asdfsdf");
    }
}

注意:大家要把commons-codec-1.3.jar,commons-httpclient-3.0.jar,commons-logging.jar这三个JAR包加到我们程序的classpath中,才能使用跑起来.

posted on 2007-12-23 23:38 -274°C 阅读(6455) 评论(5)  编辑  收藏 所属分类: JAVA


FeedBack:
# re: JAVA模拟POST
2007-12-24 08:49 | 隔叶黄莺
确切讲,这不是模拟,是切切实实的POST请求

模拟是什么,不要你手操作鼠标点击,而只用程序完成点击就是模拟

点击提交按钮是POST,程序实现同样是POST  回复  更多评论
  
# re: JAVA模拟POST
2008-07-08 19:20 | 这一
大家要把commons-codec-1.3.jar,commons-httpclient-3.0.jar,commons-logging.jar这三个JAR包加到我们程序的classpath中,才能使用跑起来.
请问怎样加的啊,能不能具体一点???  回复  更多评论
  
# re: JAVA模拟POST
2008-07-08 21:29 | 274
@这一 :

classpath 的相关设置:

1.最简单的当然是设置在环境变量里。

2.在netbeans 下 项目 右键 属性 库 添加jar

3.eclipse下 项目 右键 buildpath 下 添加 add 额外 jar。

  回复  更多评论
  
# re: JAVA模拟POST
2008-12-15 18:07 | Mars.CN
你说的那是那个包能不能给个下载地址?  回复  更多评论
  
# re: JAVA模拟POST[未登录]
2008-12-15 19:49 | -274°C
@Mars.CN

你在apache tomcat 下找,这里并没有详细说明,因为写J2EE的一般都知道这几个jar。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(21)

随笔分类(265)

随笔档案(242)

相册

JAVA网站

关注的Blog

搜索

  •  

积分与排名

  • 积分 - 909069
  • 排名 - 40

最新评论