在不同的计算机上使用HttpUrlConnection会导致不同效果的原因是什么?

时间:2013-01-17 17:18:27

标签: java http matlab httpurlconnection put

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

1 个答案:

答案 0 :(得分:1)

  

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

谁告诉你这是错的,因为the documentation没有提到这一点:

  

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

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