文档章节

HttpURLConnection Cannot write output after reading input.

之渊
 之渊
发布于 2017/03/01 09:37
字数 490
阅读 90
收藏 0

是因为 , 我在 用了 int 管道之后, 又 用了 out 管道, 所以报错了, 没测试。。。 又坑了。

public static String sendPostRequest(String path,String param) throws IOException {
		String sendUrlString=path+param;
		
		URL url = new URL(sendUrlString);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		//设置post方式请求
		conn.setRequestMethod("POST");
		//将超时控制在 8S 内,因为没有 引入 多线程发送。为了防止RTX 那边有问题,延迟太久了,对用户体验不太好。
		// 一般 反应是很快的,所以不考虑 使用线程池了。没必要搞复杂。
		conn.setReadTimeout(3000); // 读取  超时 3秒 。
		conn.setConnectTimeout(5000);//连接超时 5秒 。
		
		//conn.setRequestProperty("Accept-Charset", "utf-8");
		//conn.setRequestProperty("contentType", "utf-8");
		conn.setRequestProperty("Content-type", "application/x-java-serialized-object");
		
		
		//设置传入参数,post 
		conn.setDoOutput(true); 
		conn.connect(); // 主动建立间接 。,默认也是会建立的。
		
		//传入参数
		//conn.getOutputStream().write(param.toString().getBytes());
		// 解决中文乱码, 在 Linux 下没有乱码,本地有 ,估计 Linux 已经 帮我们转码了一次了。
		// 而且 Linux 下 的默认编码并没有 和 本地的一致,比如tomcat的啊, 系统的啊,没有 该为 默认中文的等。
		// 既然这样 在 Linux 下没有 乱码,可以不用管,如果以后  可以 去 修改 服务器里面的 编码。
		//BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
		
		// 解决中文乱码,在 Linux 下有乱码,本地没有
		//BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"GBK"));
		
		// out 管道 必须放在 int 管道之前 使用的。这个是 HRRt 规定的
		//可以不主动关闭, 默认会自动关闭的。特别是 随着 int 管道关闭同时关闭的。
		conn.getOutputStream().flush(); // 这个最好有
		 conn.getOutputStream().close();  // 关闭代码可以不用。
		
		InputStreamReader isreader = new InputStreamReader(conn.getInputStream());
		BufferedReader reader = 
				new BufferedReader(isreader);
		
		String readingString= "";
		// 读取完所有内容
		String readl=null;
		while (( readl=reader.readLine() )!=null) {
			
			readingString=readingString+readl;
			
			readl=null;
		}
		
		// 必须放在 int 管道之前 使用的。, 不要放在 这里,会报错:  Cannot write output after reading input.
		//conn.getOutputStream().close(); 
		
		// 养成 关闭 管道的习惯 。
		conn.getInputStream().close();
		isreader.close();
		reader.close();
		
		return readingString;
		
	}

参考地址: http://www.blogjava.net/supercrsky/articles/247449.html

参考地址: http://blog.csdn.net/u010278162/article/details/51054664

© 著作权归作者所有

共有 人打赏支持
之渊
粉丝 11
博文 551
码字总数 161987
作品 0
佛山
程序员
私信 提问
java.net.ProtocolException: Cannot write output after reading input.

public String submitPost(HashMap map, String surl) throws Exception { StringBuffer responseMessage = new StringBuffer(); StringBuffer params = new StringBuffer(); Iterator> it =......

习惯步行
2016/11/11
756
0
linux环境下执行HttpURLConnection发送图片流失败

大侠们,您们好,小弟有个问题问下: 我现在使用HttpURLConnection进行发送图片流到某服务器上,在window的环境下是通过的,但是部署到linux中,就无法通过,由于是破解的某网站的服务,所有...

iljsan
2012/12/21
1K
0
J2SE Socket SSL/TLS C/S模式编程

参考: http://www.iteye.com/topic/1114800 Java-JSSE-SSL/TLS编程代码实例-双向认证 Java-JSSE-SSL/TLS编程代码实例-单向认证 Java SSL密钥交换过程解析 一. SSLSocket是什么? JDK文档指出...

IamOkay
2016/05/14
219
0
android-类HttpURLConnection的使用

获取HttpURLConnection对象 URL url = new URL(url); URLConnection rulConnection = url.openConnection(); // 此处的urlConnection对象实际上是根据URL的 // 请求协议(此处是http)生成的U......

pointerException
2015/08/02
0
0
URLConnection的连接、超时、关闭用法

Java中可以使用HttpURLConnection来请求WEB资源。 1、 URL请求的类别 分为二类,GET与POST请求。二者的区别在于: a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet...

玄空
2013/02/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在 Linux 上使用 tarball

Tarball 提供了一种在 Linux 系统上备份和管理一组文件的通用方法。请按照以下提示了解如何创建它们,以及从中提取和删除单个文件。 “tarball” (LCTT 译注:国内也常称为“tar 包”)一词...

Linux就该这么学
7分钟前
0
0
2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(上)

摘要: 回顾2018,展望2019,计算机科学技术继续前进! 1、简介: 过去几年一直是人工智能爱好者和机器学习专业人士最幸福的时光。因为这些技术已经发展成为主流,并且正在影响着数百万人的生...

阿里云官方博客
11分钟前
0
0
UnsatisfiedLinkError sawindbg.dll

方法:搜索sawindbg.dll,然后将文件报错的目录下

洛水
12分钟前
0
0
说说不知道的Golang中参数传递

本文由云+社区发表 导言 几乎每一个C++开发人员,都被面试过有关于函数参数是值传递还是引用传递的问题,其实不止于C++,任何一个语言中,我们都需要关心函数在参数传递时的行为。在golang中...

腾讯云加社区
13分钟前
0
0
207. 多数据源 ssm项目

参考博客: https://blog.csdn.net/a15020059230/article/details/76677322 1.效果 一个项目同时连接多个数据源 2. 过程 2.1 搭建单数据源ssm项目 https://my.oschina.net/springMVCAndsprin...

Lucky_Me
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部