Java利用HttpClient模拟POST表单操作应用及注意事项

作者:88250 时间:2023-11-29 23:48:01 

HttpClient使用post方法提交数据 源代码:


package post;
import Java.io.IOException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class PostHttp {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  HttpClient httpClient = new HttpClient();
  String url = "http://193.167.13.21/setup.cgi";
  PostMethod postMethod = new PostMethod(url);
//   填入各个表单域的值
  NameValuePair[] data = {
    new NameValuePair("ID", "11"),
    new NameValuePair("mtg", "0"),
    new NameValuePair("haveCookie", "0"),
    new NameValuePair("backID", "30"),
    new NameValuePair("psw", "password")
  };
//   将表单的值放入postMethod中
  postMethod.setRequestBody(data);
//   执行postMethod
  int statusCode = 0;
  try {
   statusCode = httpClient.executeMethod(postMethod);
  } catch (HttpException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
//   HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
//   301或者302
  if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY)
  {
   //   从头中取出转向的地址
   Header locationHeader = postMethod.getResponseHeader("location");
   String location = null;
   if (locationHeader != null) {
    location = locationHeader.getValue();
    System.out.println("The page was redirected to:" + location);
   }
   else {
    System.err.println("Location field value is null.");
   }
   return;
  }
  else
  {
         System.out.println(postMethod.getStatusLine());
         String str = "";
         try {
               str = postMethod.getResponseBodyAsString();
         } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
         }       
         System.out.println(str);
  }
  postMethod.releaseConnection();
        return ;
 }
}


//这是一个用户认证过程的登陆信息

其中需要的jar包:

1、commons-httpclient-3.1-rc1.zip http://jakarta.apache.org/commons/httpclient/downloads.html

2、commons-codec-1.3.jar    http://jakarta.apache.org/site/downloads/downloads_commons-codec.cgi

3、commons-logging-api.jar   在tomcat5.5中的Tomcat 5.5/bin目录下或者    http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi

标签:Java,HttpClient,POST
0
投稿

猜你喜欢

  • 解析Android框架之OkHttp3源码

    2022-12-05 16:28:02
  • WPF使用DrawingContext实现绘制刻度条

    2023-06-19 08:35:17
  • SpringBoot使用SchedulingConfigurer实现多个定时任务多机器部署问题(推荐)

    2021-09-17 07:19:20
  • RocketMQ broker文件清理源码解析

    2022-04-28 07:09:12
  • 完美解决idea moudle没有蓝色的小方块的问题

    2021-05-28 16:09:03
  • 全面分析Java文件上传

    2021-12-09 13:22:52
  • IDEA中使用jclasslib插件可视化方式查看类字节码的过程详解

    2021-10-12 08:18:31
  • 使用Java设置字型和颜色的方法详解

    2023-04-14 05:09:23
  • unity实现弧形移动 可角度自定

    2022-12-16 22:38:19
  • spring boot配置多个请求服务代理的完整步骤

    2023-03-30 10:30:49
  • mybatis-plus 使用Condition拼接Sql语句各方法的用法

    2022-07-06 03:51:12
  • Unity3D 单例模式和静态类的使用详解

    2022-09-22 08:16:19
  • 使用mybatis-plus想要修改某字段为null问题

    2021-09-17 02:17:35
  • android中TabHost的图标(48×48)和文字叠加解决方法

    2023-05-19 14:13:28
  • java清除html转义字符

    2023-03-18 12:20:10
  • Android TextView自定义数字滚动动画

    2023-10-03 09:48:17
  • java中JSONObject转换为HashMap(方法+main方法调用实例)

    2023-08-10 04:04:08
  • java实现学生信息管理系统

    2023-11-11 08:22:35
  • Android studio报: java.lang.ExceptionInInitializerError 错误

    2022-08-14 14:21:30
  • Android应用APP自动更新功能的代码实现

    2022-09-17 09:48:25
  • asp之家 软件编程 m.aspxhome.com