使用HttpURLConnection发送post和get请求

Win10局域网内文件共享+远程桌面控制保姆级教程(含常见问题解决) 本文提供Win10局域网内文件共享和远程桌面控制的详细教程,包括环境检查、共享文件夹设置、远程桌面连接步骤及常见问题解决方案。通过内置功能实现高效办公协作,提升多设备协同工作效率,特别适合需要频繁传输文件或远程控制场景的专业人士。 阅读详情

原文链接:http://blog.youkuaiyun.com/totogogo/article/details/1831588

 

使用HttpURLConnection发送post和get请求

1、http://blog.youkuaiyun.com/pandazxx/archive/2007/06/18/1657109.aspx

2、http://blog.youkuaiyun.com/pandazxx/archive/2007/06/20/1660008.aspx

但我们常常会碰到这样一种情况:

通过HttpURLConnection来模拟模拟用户登录Web服务器,服务器使用cookie进行用户认证。在模拟登录时,Post表单数据后可以正确登录(登陆成功时会response一个cookie,然后redirect到main page,不成功则redirect到login page),但是在使用HttpURLConnection再次连接服务器其他页面(或者即使是当前的response里是redirect的page)时,服务器都会认为是全新的一个Session。

解决方法有2步:

1. 调用HttpURLConnection (send post request to login page)的setInstanceFollowRedirects()方法,参数为false (这样不会去获取redirect page)

2. 获取HttpURLConnection send post request to login page的session id,然后在之后每一次的connection里都加上该session id

Example:
    String sessionId = "";  
    public static void sendLoginRequest() throws IOException {
       URL loginUrl = new URL("http://xxx");
       HttpURLConnection connection = (HttpURLConnection) loginUrl.openConnection();
 
 
       // Output to the connection. Default is
       // false, set to true because post
       // method must write something to the
       // connection
       // 设置是否向connection输出,因为这个是post请求,参数要放在
       // http正文内,因此需要设为true
       connection.setDoOutput(true);
       // Read from the connection. Default is true.
       connection.setDoInput(true);
       // Set the post method. Default is GET
       connection.setRequestMethod("POST");
       // Post cannot use caches
       // Post 请求不能使用缓存
       connection.setUseCaches(false);
 
       // This method takes effects to
       // every instances of this class.
       // URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。
       // connection.setFollowRedirects(true);
      
       // This methods only
       // takes effacts to this
       // instance.
       // URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
       connection.setInstanceFollowRedirects(false);
      
       // Set the content type to urlencoded,
       // because we will write
       // some URL-encoded content to the
       // connection. Settings above must be set before connect!
       // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
       // 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
       // 进行编码
       connection.setRequestProperty("Content-Type",
              "application/x-www-form-urlencoded");
       // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
       // 要注意的是connection.getOutputStream会隐含的进行connect。
       connection.connect();
 
       DataOutputStream out = new DataOutputStream(connection
              .getOutputStream());
 
         // 要传的参数
       String content = URLEncoder.encode("username", "UTF-8") + "="
              + URLEncoder.encode("XXX", "UTF-8");
       content += "&" + URLEncoder.encode("password", "UTF-8") + "="
              + URLEncoder.encode("XXXX", "UTF-8");
 
       // DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
       out.writeBytes(content);
 
       out.flush();
       out.close(); // flush and close
 
          //Get Session ID
       String key = "";
       if (connection != null) {
           for (int i = 1; (key = connection.getHeaderFieldKey(i)) != null; i++) {
              if (key.equalsIgnoreCase("set-cookie")) {
                  sessionId = connection.getHeaderField(key);
                  sessionId = sessionId.substring(0, sessionId.indexOf(";"));
              }
           }
       }     
       connection.disconnect();
    }
 

 然后之后每一次connection都要加上这个session id:
URL url = new URL("http:......");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Cookie",this.sessionId);
connection.connect();

从理论到实践:笛卡尔空间阻抗控制的实现挑战与变体解析 本文深入探讨了笛卡尔空间阻抗控制的核心原理、工程实现中的五大挑战及经典变体实战解析。通过详细的数学建模和实际案例分析,揭示了阻抗控制在工业机器人、医疗设备等领域的应用价值,特别是在力感知精度、动力学模型校准和实时计算等方面的关键技术突破。 阅读详情

相关推荐

三大主流交易接口实战指南:XTP、CTP与数字货币API的实盘接入解析

本文深入解析了量化交易系统实现实盘交易的关键环节,聚焦于三大主流交易接口的实战接入。详细介绍了证券领域的XTP、期货领域的CTP以及数字货币交易所API的核心特性、代码封装要点与风控实践,并提供了多市场接口整合的统一架构方案,为开发者打通量化交易的“最后一公里”提供了一份接地气的实战指南。

win55的博客 1373

Http学习之使用HttpURLConnection发送post和get请求

最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。下面的代码简单描述了如何使用

aneka的百宝盒 1358

告别GUI点点点:Formality形式化验证的TCL脚本自动化实战(附完整脚本)

本文详细介绍了如何通过TCL脚本实现Formality形式化验证的全流程自动化,显著提升验证效率并降低错误率。内容涵盖脚本框架解析、参数化设计、验证报告生成及团队协作策略,特别适合芯片设计工程师摆脱传统GUI操作,实现300%以上的效率提升。

weixin_33737134的博客 282

Http学习之使用HttpURLConnection发送post和get请求 .

最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。 下面的代码简单描述了

MOKA 765

[OrCad电路板设计系统].Orcad.Pspice.9.2下载安装

Orcad.Pspice.9.2详细下载安装图文步骤1 安装前准备工作1.1 下载安装包1.2 解压2 安装时步骤2.1 安装文件2.2 破解文件3 安装完成 1 安装前准备工作 1.1 下载安装包 打开百度网盘APP 链接:https://pan.baidu.com/s/1cMFxHUvuh5iEhFVT-lvciQ 提取码:7m65 1.2 解压 解压下载好的安装包 2 安装时步骤 2.1 安装文件 1.点击Setup安装文件,出现警告对话框,告诉你应该关闭所有病毒防火墙,点击确定 2.进入安装界面,

weixin_48924581的博客 1万+

从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南

本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。

weixin_29063979的博客 318

使用HttpURLConnection发送get和post请求

转载请注明出处: 我们在开发的使用,直接使用的开源框架,例如:Xutil,Volley开源框架直接访问网络,但是我们也需要知道其中的一些知识,了解一下怎样访问网络的。下面我们模拟以下客户端和服务端,看看post和get请求。 首先我们开发一下客户端: 1.首先自定义线程,开启get请求。 public class GetThread extends Thread {

forwardyzk的专栏 2万+

Android 14.0 Launcher3定制化之最近任务的全部清除由左边移到下边显示

在最近14.0的系统rom产品开发中,在Launcher3的定制化开发中,在最近任务列表中,发现点击recents最近任务键后 显示的全部清除按键在左边 由于是横屏的产品显示在左边不太合理 所以要求显示在下边比较合理,所以要从Launcher3的显示流程来解决这个问题

安卓兼职framework和app工程师的博客 763

Http学习之使用HttpURLConnection发送post和get请求 android

最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。 下面的代码简单描述了

幸福的小金火 544

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7888

使用HttpURLConnection向服务器发送post和get请求

使用HttpURLConnection向服务器发送post和get请求 转自:http://www.cnblogs.com/linjiqin/archive/2011/09/19/2181634.html 一、使用HttpURLConnection向服务器发送get请求 1、向服务器发送get请求 @Test publicvoid sendSms() throw

吝啬言语的博客 493

华为od 面试八股文_C语言_02_含答案

华为od 面试八股文_C语言_02_含答案

MISAYAONE的博客 2229
上一篇: android java.net.UnknownHostException: Unable to resolve host "...": No address associated 错误
下一篇: js和php几种编码方法对特殊符号的编码对照表
分号不回车
博客等级 码龄17年 4粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值