我编写了一个HTTP服务器来以RESTful方式管理资源,以及一些客户端(.NET,VBA)。
我需要使用MATLAB的RESTful API,所以我使用HttpUrlConnection编写了一个Java客户端。
我在使用它的计算机上工作得很好,除了一个用户的PUT请求是作为POST请求接收的。
我的JAVA代码包括:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(Method);
我读到setDoOutput(true)应该将HTTP方法设置为POST,但是因为我使用Method =“PUT”调用了setRequestMethod(Method),并且它从大多数工作站开始工作,并且这是唯一的方法我发现用HttpURLConnection发送PUT请求,我不知道可能出现什么问题。
每个matlab客户端运行相同的1.6 java版本。
我找不到发生了什么,所以我切换到Apache HTTP库(并且它可以工作),但我想知道HttpURLConnection发生了什么。
答案 0 :(得分:1)
我读到setDoOutput(true)应该将HTTP方法设置为POST
谁告诉你这是错的,因为the documentation没有提到这一点:
URL连接可用于输入和/或输出。如果您打算将URL连接用于输出,请将DoOutput标志设置为true,否则设置为false。默认值为false。
正如您所推测的,您应该使用the setRequestMethod(method)
method来设置请求类型。那么变量Method
的价值是多少?你为什么不用setRequestMethod("PUT")
?