0

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

4

1 回答 1

1

我读到 setDoOutput(true) 应该将 HTTP 方法设置为 POST

谁告诉你这是错误的,因为文档没有提到这一点:

URL 连接可用于输入和/或输出。如果您打算使用 URL 连接进行输出,请将 DoOutput 标志设置为 true,否则设置为 false。默认值为假。

正如您所猜测的,您应该使用setRequestMethod(method)方法来设置请求类型。那么你的变量的值是Method多少?你为什么不直接使用setRequestMethod("PUT")

于 2013-01-17T17:34:18.270 回答