首页 > 其他分享 >Http学习之使用HttpURLConnection…

Http学习之使用HttpURLConnection…

时间:2023-04-30 19:03:54浏览次数:35  
标签:Http request System 学习 connection println http HttpURLConnection out


post请求的OutputStream实际上不是网络 流,而是写入内存,在getInputStream 中才真正把写道流里面的内容作为正文与 根据之前的配置生成的http request头合并成真正的http  request,并在此时才真正向服务器发送。

函数可以改变这个模式,设置了ChunkedStreamingMode后,不再等待OutputStream关闭后生成完整的http request一次过发送,而是先发送http r equest头,正文内容则是网路流的方式实时传送到服务 器。实际上是不告诉服务器http正文的长度, 这种模式适用于向服务器传送较大的 或者是不容易 获取长度的数据,如文件。下 面以一段代码讲解一下,请与 Http学习之使用HttpURLConnection发送post和get请求 中的readContentFromPost()函数作对比:


Http学习之使用HttpURLConnection…_post请求

   

public
   
   static
   
   void
   readContentFromChunkedPost() 
   throws
   IOException 
   {
         URL postUrl =newURL(POST_URL);
         HttpURLConnection connection =(HttpURLConnection) postUrl
                 .openConnection();
         connection.setDoOutput(true);
         connection.setDoInput(true);
         connection.setRequestMethod("POST");
         connection.setUseCaches(false);
         connection.setInstanceFollowRedirects(true);
         connection.setRequestProperty("Content-Type",
                 "application/x-www-form-urlencoded");
         
         connection.setChunkedStreamingMode(5);
         connection.connect();
         
         DataOutputStream out =newDataOutputStream(connection
                 .getOutputStream());
         String content ="firstname="+URLEncoder.encode("一个大肥人                                                                               "+
                 "                                         "+
                 "asdfasfdasfasdfaasdfasdfasdfdasfs", "utf-8");
         out.writeBytes(content); 

         out.flush();
         out.close(); //到此时服务器已经收到了完整的http request了,而在readContentFromPost()函数里,要等到下一句服务器才能收到http请求。
       BufferedReader reader =newBufferedReader(newInputStreamReader(
                 connection.getInputStream()));
         
         out.flush();
         out.close(); //flush and close
       String line;
         System.out.println("=============================");
         System.out.println("Contents of post request");
         System.out.println("=============================");
         while((line =reader.readLine()) !=null) {
             System.out.println(line);
         }
         System.out.println("=============================");
         System.out.println("Contents of post request ends");
         System.out.println("=============================");
         reader.close();
         connection.disconnect();
     }

标签:Http,request,System,学习,connection,println,http,HttpURLConnection,out
From: https://blog.51cto.com/u_548275/6238004

相关文章

  • Android平台下使用HttpUrlConnecti…
    publicstaticStringrequestByPost(Stringurlpath,StringrequestData)throwsIOException{//HTTPconnectionreusewhichwasbuggypre-froyoif(Build.VERSION.SDK_INT<Build.VERSION_CODES.FROYO){URLurl=newURL(urlpath);......
  • 详细的BoltDB学习记录文档
    最近项目中用到了boltdb这个go开发的key/value数据库,但是之前并有接触过,所以特意去看了官方,也找了些资料,网上找的资料要不就是官方文档的翻译,要不就是简单的介绍一点,都不是很全,所以这里记录下。话不多说,冲!本篇文章是参考了官方的文档,内容和官方的基本一致,只是加了些自己的理解......
  • 嵌入式学习笔记汇总
    本文整理STM32、STM8和uCOS-III的所有文章链接。STM32学习笔记目录源码:mySTM32-learnSTM32学习笔记(1)——LED和蜂鸣器STM32学习笔记(2)——按键输入实验STM32学习笔记(3)——时钟系统STM32学习笔记(4)——NVIC中断优先级管理和外部中断EXTISTM32学习笔记(5)——系统定时器SysTickS......
  • matlab学习2(数据预处理、简单线性规划)
    1.matlab导入数据注意事项:记得保存数据,清空工作区或者关闭matlab后数值就没有了。2.数据预处理清理缺失值实时编辑器-->任务-->清理缺失数据处理异常值:实时编辑器-->任务-->清理离群数据例子:x=1:100;%构造一个数组,元素为1,2,...,100%randn(1,100)生成1行100列矩......
  • ActiveMQ学习(一)——MQ的基本概念…
    1)队列管理器队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务。2)消息在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的理解,比如:用户的各种类型的数据文件,某个应用向其它应用发出的处理请求等都可以作为消息。......
  • HTTPS 研究机制
    HTTPS存在不同于HTTP的默认端口,HTTP默认端口是80或8080,HTTPS默认端口是443或者8443。HTTPS有一个加密/身份验证层(在HTTP与TCP之间),这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯(数据传输)方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。HTTPS和HTTP的......
  • HTTPS原理详解
    HTTPS(全称:HypertextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。它是一个URIscheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL......
  • OpenCV加载深度学习模型
    目录1.单张图像(1)构建网络模型(2)图像预处理(3)预测结果2.多张图像本文使用OpenCV加载深度学习模型,实现了对传入的单张图像或多张图像进行预测。步骤:首先读入Caffe框架训练好的模型,然后对输入图像进行预处理操作,并将其传入已构建的网络模型,最后对得到的预测结果进行排序,找......
  • Gradio: 使用Python构建机器学习网页应用
    Gradio:用Python构建机器学习网页APPGradio是一个开源的Python库,用于构建演示机器学习或数据科学,以及web应用程序。使用Gradio,您可以基于您的机器学习模型或数据科学工作流快速创建一个漂亮的用户界面,让用户可以”尝试“拖放他们自己的图像、粘贴文本、录制他们自己的声音,并通......
  • 树分治学习笔记
    一、点分治一、概述前置知识:数的重心。假设我们要统计一棵有\(n\)个节点的树上所有点对之间距离是\(k\)的有多少对。注意树上的边有长度。\(n\le10^5,k\le10^6\)。一个朴素的算法是遍历树上的所有点对,处理出距离(也就是链的长度)。时间复杂度\(O(n^2)\)。考虑优化。......