我编写了一个 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 发生了什么。