httpClient使用postMethod请求

PostMethod发送post请求忽略HTTPS证书验证 1.信任全部证书类MySSLProtocolSocketFactory import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.U... 阅读详情

(一) maven环境下引入必备jar

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

(二) 使用httpClient 获取登录的cookie并携带cookie发起请求

//导入的jar包
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.HttpException;

  org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
    httpClient.getHostConfiguration().setProxy("localhost",8888);//设置本地代理,方便fiddler监听
    //使用httpClient登录网站,并获取cookie
    PostMethod postMethod = new PostMethod("loginUrl");
    //使用NameValuePair 传递参数
    PostMethod method = new PostMethod("登录后请求的地址"); 
    NameValuePair[] data = { new NameValuePair("key","value") };
    postMethod.setRequestBody(data);

     // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略
    httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

     // 获取请求的cookie
    Cookie[] cookies = httpClient.getState().getCookies();
    StringBuffer tmpcookies = new StringBuffer();
            for (Cookie c : cookies) {
                tmpcookies.append(c.toString() + ";");
            }
    //携带请求的cookie
     method.setRequestHeader("cookie",tmpcookies.toString());

    //发起请求
    int executeMethod = httpClient.executeMethod(method);

    //获取请求头
    org.apache.commons.httpclient.Header[] headers = method.getResponseHeaders();

    //获取响应,postMethod 提供两种方式,getResponseBodyAsString和getResponseBodyAsStream,但前者在没指定Content-length或者Content-length过长时会报错,推荐使用后者.
    InputStream stream = method.getResponseBodyAsStream();
     BufferedReader br = new BufferedReader(new InputStreamReader(stream));  
         StringBuffer stringBuffer = new StringBuffer(); 
         String str1= "";  
         while((str1 = br.readLine()) !=null){  
         stringBuffer.append(str1);  
         }  
        String sb=stringBuffer.toString();
        //按照utf-8格式输出响应体
        String result = new String(sb.getBytes(),"UTF-8");
        JSONArray fromObject = JSONArray.fromObject(result);
        JSONObject json = fromObject.getJSONObject(0);
        logger.info(result);

(三)使用时遇到的一些坑

  • 使用postMethod访问登陆的url获取的cookie有问题,导致后期通过这个cookie请求数据失效,后来通过fiddler抓包看到了正确的登陆请求地址。fiddler大法好。
  • 在postMethod请求携带cookie信息时候,之前使用如下方式意图携带cookie访问,实测无效。
BasicCookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("key","value");
//请求后获取得到的cookie1,由于包不同,不能直接直接执行cookieStore.addCookie(cookie1)
//之前妄图通过BasicClientCookie cookie = new BasicClientCookie(cookie1.getName,cookie1.getValue());来强转换,实测不行。。。
//携带cookie信息还是要通过设置请求头信息来
cookieStore.addCookie(cookie);
httpClient.setCookieStore(cookieStore);        
httpClient.execute("method");
解决发起post请求时候中文乱码问题
//第一种方式        
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");//解决中文乱码 

//第二种方式,通过重载getRequestCharSet()方法设置提交的编码(字符集)。 
public class UTF8PostMethod extends PostMethod {
    public UTF8PostMethod(String url){       
        super(url);       
        }       
        @Override       
        public String getRequestCharSet() {       
            //return super.getRequestCharSet();       
            return "UTF-8";       
        }    
}

//两种方式都实测有效。
使用HttpClient的PostMethod上传文件实战指南 在现代的网络应用开发中,与Web服务交互是必不可少的。Apache HttpClient作为Java领域广泛使用的一个HTTP客户端,提供了一套完整的工具来执行各种HTTP操作,如GET、POST、PUT、DELETE等,是开发者在进行远程服务调用和数据交换时的首选库。本章将为读者介绍HttpClient的基本概念、功能以及安装和配置方式,为后续深入了解其文件上传、请求发送和字符编码处理等高级用法打下基础。PostMethod是Apache HttpClient提供的一个用于发送POST请求的类。 阅读详情

相关推荐

Origin2018(汉化版)在使用科学计数法的时候如何将坐标刻度的0.0改成0

文章目录1 问题2 解决方法 1 问题 先看下面这张图,当我使用科学计数法时,纵坐标出现了0.0的字样,这样看起来很不美观。有些期刊还会有要求,不能出现0.0的格式。 图1 那么该怎么将它改成0呢?首先让我们尝试着用Origin自带的属性,看看能不能设置。 2 解决方法 解决方法一: step1: 双击坐标轴,打开坐标轴属性设置。 step2: 在刻度线标签选项中设置左轴的显示 图2 会发现,按照图2的方式改好之后,其它的小数位也全没了,如果但是有些数字就被覆盖了,这显然不是我

qq_40077565的博客 2万+

HttpClient PostMethod方式

一、PostMethod一般请求 /** * POST方式 * @return * @throws Exception */ public static String PostMethodTest() throws Exception{ System.out.println("开始"); HttpClient

三片叶子的修行日记 1万+

AD9026芯片开发实战指南:从硬件配置到射频校准

本文为AD9026芯片开发实战指南,详细解析了从硬件设计、电源时钟配置、SPI初始化到多芯片同步与JESD204高速链路建立的完整流程。重点探讨了射频校准技术,包括初始化校准与跟踪校准,以保障5G、MIMO等现代通信系统所需的射频性能。旨在帮助开发者系统掌握这颗高性能射频收发器的应用,规避常见设计陷阱。

tomato的博客 851

springboot使用httpclient(PostMethod,RequestEntity等)使用笔记

所需jar包如下: commons-codec-1.7.jar commons-logging-1.1.1.jar commons-httpclient.jar httpclient-4.2.2.jar httpcore-4.2.2.jar 如果有spring-boot-starter-parent ,下面2个默认会带: commons-codec-1.7.jar commons-loggin...

enthan809882的博客 8799

知识图谱-Neo4j-开始构建知识图谱-01

关系(Relationships):连接两个节点,具有方向(→ 或 ←)和类型(Type),可附加属性。 属性(Properties):键值对,存储节点或关系的详细信息(如 , )。 (2) Cypher 查询语言 直观语法:通过模式匹配直接描述图结构。 高效遍历:支持复杂关系路径查询(如最短路径、模式匹配)。 3. 核心优势 (1) 原生图存储 物理存储优化:数据以图结构直接存储,避免传统数据库的“表连接”开销。 高效遍历:通过指针直接访问相邻节点,时间复杂度接近 O(1)。 (2) 高性

寓教于乐。教己助人 1万+

量子密钥分发系统设计与实现(一):系统基本架构讨论

本文主要对量子密钥分发系统中的基础架构和基于系统的量子密钥协商过程进行了初步讨论,为后期系列文章进行铺垫。

量子领域相关话题 3891

httpClient使用postMethod方法发送请求,携带参数并解决中文乱码问题

httpClient postMethod 传递参数 防止中文乱码

zhaofuwu的博客 2万+

STM32驱动2.8寸TFTLCD屏幕实战:从看懂原理图到点亮第一个像素(基于ILI9341)

本文详细介绍了如何使用STM32驱动2.8寸TFTLCD屏幕(基于ILI9341驱动芯片),从硬件连接到软件配置,包括FSMC接口设置、ILI9341初始化序列、坐标设置及基础绘图函数实现。文章还提供了常见问题排查指南和性能优化技巧,帮助开发者快速解决屏幕不亮等问题,并提升显示性能。

weixin_42665255的博客 267

commons-httpclient的配置及PostMethod和GetMethod

executeMethod(postMethod) 表示发送PostMethod请求 及Post请求。返回code码 code为200 表示发送请求成功。GetMethod发送get请求,添加数据直接在url后面拼接和平常发送请求一样 其他添加数据的方法无效 尝试过多次。发送成功返回code码==200.总结:像HttpClient等发送请求类 配置信息通常就是配置 连接数,和超时时间限制。关于commons-httpclient的配置看图,哪里不懂 再去看源码。

ningxiaobai456的博客 913

倍福--实现TCP/IP的配置

控制器为CX5120,需要和上位机做通信,选择TCP/IP的通讯方式,本文介绍TCP/IP通信的操作步骤。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 1.2. 串口调试助手 3 1.2.1. TCP调试通信助手 3 授权文件 3 2.1 Lib文件 3 2.2. CAB文件 4 PLC程序编写 4 3.1. 引入TCP/IP库文件 4 3.2. Client端程序 5 3.2.1. 建立相关变量 5 3.3.2. 编写连接功能块

weixin_41883890的博客 5730

InfiniBand 与 RoCE 协议介绍

InfiniBand 是高性能互联的 “标杆”,以极致的低延迟、高可靠性适用于对性能要求苛刻的场景(如超算、大规模 AI 训练);而 RoCE 通过以太网实现 RDMA,平衡了性能与成本,成为数据中心和云计算的主流选择。两者均基于 RDMA 技术,核心目标是解决传统网络的 “CPU 瓶颈” 和 “延迟瓶颈”,推动高性能计算和分布式系统的发展。

jundao1997的专栏 713

httpClient PostMethod

public static String sendHttpClient(String methodUrl, String xml){ HttpClient client = new HttpClient(); // 使用 GET 方法 ,如果服务器需要通过 HTTPS 连接,那只需要将下面 URL 中的 http 换成 https PostMethod method = new PostMe

awj321000的专栏 1万+

手把手教你用ESP32-S3打造智能聊天机器人-立创实战派

本文将详细介绍如何利用立创ESP32-S3开发板,烧录小智AI程序,快速实现一个功能强大的聊天机器人。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 9911

使用httpclient的postMethod方法发送请求对方接收报文中文乱码

解决方案:使用httpclient实现网络通信,传递数据。 关键问题:httpClient postMethod 传递参数 防止中文乱码 一,所需jar包 maven引用如下: <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.0</...

xyl的博客 2064

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HttpClient:与springmvc结合跨域请求——使用PostMethod类进行请求,上传文件,携带参数

1.无参数public static PostMethod postMethod(String url) { return new PostMethod(url); } /** * 通过postMethod类进行请求 * @param post */ public static void sendByPostMethod(PostMethod post) { try ...

future_1024的博客 2555

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

使用HttpClient和PostMethod调用请求

一、引入依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>commons-httpclien

qq_41028058的博客 1039

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java中postMethod_HttpClient结合PostMethod调用接口

解决方法:HttpClient client = new HttpClient();PostMethod post = new PostMethod("http://192.168.0.189:8500/short");post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");/...

weixin_39793420的博客 444

Java HttpClient PostMethod

Java HttpClient PostMethod import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.junit.Test; /** * @a...

weixin_30952535的博客 148

HttpClient发起post请求

HttpClient同样可以发起post请求,这里只是一个实例。下面请看: 构造PostMethod之前的步骤都相同,与GetMethod一样,构造PostMethod也需要一个URI参数,在本例中,登录的地址是http://www.newsmth.net/bbslogin2.php。在创建了PostMethod的实例之后,需要给method实例填充表单的值,在BBS的登录表单中需要有两个域,第

李守宏 1万+

postmethod java_java实现post请求(PostMethod)

项目要求:实现post请求,且请求格式是json格式。maven依赖包org.apache.httpcomponentshttpclient4.5.3commons-httpclientcommons-httpclient3.1java代码实现:HttpClienthttpClient=newHttpClient();httpClient.getParams().setContentCha...

weixin_31524201的博客 342

HttpClient结合PostMethod调用接口

HttpClient结合PostMethod调用接口 解决方法: HttpClient client = new HttpClient(); PostMethod post = new PostMethod("http://192.168.0.189:8500/short"); post.addRequestHeader("Content-Type", ...

weixin_33767813的博客 676

httpclient 设置代理 PostMethod 示例

1.httpclient为4.X         2.源码为        HttpClient httpClient = new HttpClient();           //设置代理服务器地址和端口     ,在ie浏览器可以看到          httpClient.getHostConfiguration().setProxy("127.0.0.1", 8080);

PS-ER的专栏 4006

HttpClient client = new HttpClient()的依赖

<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> Strin...

myme95的博客 1万+

HttpClient request payload post请求

https://blog.youkuaiyun.com/hhooong/article/details/52750647 //获取订单详情需要的传递的参数 String paramsOrder = "{\"hotelRange\": \"1\", \"lstChannelSourceType\": [1, 4], \"languageTypeEnum\": \"LANG_ZH\"}"; //发包形式...

weixin_33724570的博客 618

HttpClient示例及资源释放

HttpClient请求资源释放 点关注不迷路,欢迎再访! 精简博客内容,尽量已行业术语来分享。 努力做到对每一位认可自己的读者负责。 帮助别人的同时更是丰富自己的良机。 目录HttpClient请求资源释放一.PostMethod二.GetMethod三.HttpPost 一.PostMethod public class TestHttpclient extends TestCase { public static void main(String args[]) { Strin

最初的节奏 1314

HttpClient 3.1 发送 post请求

HttpClient 3.1 [code="java"]HttpClient httpClient = new HttpClient(); //url是请求的url PostMethod postMethod = new PostMethod(url); //提交的请求参数。请求参数不要包含在url里,这样请求参数长度不受url长度限制。 postMethod.setParamete...

samwalt的博客 602
上一篇: 自建API网关-架构设计篇
下一篇: 解决IDEA 下Invalid 'log4jConfigLocation' parameter: 的问题
solivemore
博客等级 码龄9年 6粉丝 26原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值