http delete 方法传参数遇到java.net.ProtocolException: DELETE does not support writing的问题

最近在测试通过http delete method传参数调用服务端方法,遇到了java.net.ProtocolException: DELETE does not support writing

			try {
				url = new URL(path);
				HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
				httpCon.setDoOutput(true);
				httpCon.setRequestMethod(method);
				OutputStreamWriter out = new OutputStreamWriter(
						httpCon.getOutputStream());
				out.write(new Gson().toJson(params));
				out.close();
				String urlStringsss = convertStreamToString(httpCon.getInputStream());
				InfoPrinter.printLog(convertStreamToString(httpCon.getInputStream()));
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

  执行时捕捉到

java.net.ProtocolException: DELETE does not support writing

后来在万能的google帮助下,最终在stackoverflow上找到了答案,先来看国外的一位Coder怎么说

I do not believe that HTTP DELETE takes input - I believe it acts like a GET variant.

The implementation provided by HTTP Client seems to support this conjecture as well.

If you are looking to provide a delete with a body, you /might/ want to consider using a POST to a location that accepts a body.

But in answer to your question, no, delete does not accept a body. You can add query parameters but not a body.

HTTP DELETE 不支持通过output来write参数,只能像GET方法一样通过url paramter来传递参数,否则会报标题上遇到的错误。

http delete 方法传参数遇到java.net.ProtocolException: DELETE does not support writing的问题

时间: 2024-10-17 04:07:54

http delete 方法传参数遇到java.net.ProtocolException: DELETE does not support writing的问题的相关文章

Eclipse如何给main方法传参数

import java.util.Arrays; /**  * 这是一个测试类,用来研究main方法的传值问题  * @author HHB  */ public class Test { /**  * 这是类的主方法,用来接受用户的输入,并将输入数据保存到一个String类型的数组里  * @param args  */ public static void main(String[] args) { System.out.println(Arrays.toString(args));//打印

[原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Java:方法的参数是传值还是传引用

Java中方法的参数总是采用传值的方式. 下列方法欲实现对象的交换,但实际上是不能实现的. public void swap(simpleClass a,simpleClass b){ simpleClass temp=a; a=b; b=a; } 因为传入swap的参数实际是对象a和b的一个拷贝(假设为aa,bb). 在方法中虽然交换了aa和bb,但方法结束后它们不再存在. a和b仍然引用调用swap之前的对象. -------------------------分割线 -----------

java 方法传参

这是小弟的第一篇博客,写得不好还请看官见谅哈! java 有两种数据类型:基本数据类型(int,short,long,byte,float,double,boolean,char),引用数据类型(基本数据类型之外的数组,String,对象等等). 在方法中传参数有两种方式:值传递和引用传递 先看下面的一个实例. public class Stu { String name; int age; public String getName() { return name; } public void

.net中以传引用的方式 向方法中传参数

CLR(CommonLanguageRuntime)公共语言运行时,允许以传引用而非传值的方式传递参数.在C#中,这是用关键字 out 和ref来做到的. 从CLR角度来看,这两个关键字没什么区别,生成的IL代码都是一样的.但是C#编译器是将这两个关键字区别对待的,而且这个区别决定了由哪个方法负责初始化所引用的对.象.如果方法的参数用out关键字来标记,表明不指望调用者在调用方法之前初始化对象.被调用的方法不能够读取out标记的参数的值,而且在函数返回前必须给该参数写入值. 相反,使用ref标记

java的File类的 delete方法删不掉文件的原因分析

先举几个可以删除掉文件和删除不掉文件的例子(先在F盘创建test1.txt文件,然后可以直接拷贝代码到IDE执行),最后总结下原因: 例子一:下面的例子毫无疑问是能够删除掉文件的 import java.io.File; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { File file = new File("F:/test1.

Effective Java - 方法的参数声明

给方法的参数加上限制是很常见的,比如参数代表索引时不能为负数.对于某个关键对象引用不能为null,否则会进行一些处理,比如抛出相应的异常信息. 对于这些参数限制,方法的提供者必须在文档中注明,并且在方法开头时检查参数,并在失败时提供明确的信息,即: detect errors as soon as possible after they occur 这将成为准确定位错误的一大保障. 如果没有做到这一点,最好的情况是方法在处理过程中失败并抛出了莫名其妙的异常,错误的源头变得难以定位,但这是最好的情

Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

本文装载自:http://blog.csdn.net/u012737182/article/details/52831008    感谢原文作者分享 开发环境:Tomcat9.0 在使用Ajax实现Restful的时候,有时候会出现无法Put.Delete请求参数无法传递到程序中的尴尬情况,此时我们可以有两种解决方案:1.使用地址重写的方法传递参数.2.配置web.xml项目环境. 测试的程序为: @RequestMapping(value = "/member", method =

关于在java中向带有IN的SQL语句中传参数的问题

今天遇到俩个问题: 1.在使用表格模型的时候,从数据库查询出来的数据赋值到Jtable的时候永远只显示最后一天记录,前面的都被覆盖了.一直在究其原因,未果,遂择其道而行之(第二个问题). 2.为了解决上面的问题,我将SQL语句的条件换成IN,目的想把所有参数一并传过去,查询所有记录后在一并显示到Jtable上,实验证明我的做法是对的.但是,一直没有搞懂IN(?)这个问号应该如何传值. SQL : String sql = " select sxh,grbm,xm,yybm,fyze,qzfbf,