Rails操作不响应Java POST

时间:2011-01-29 22:24:56

标签: java ruby-on-rails-3 http-post httpurlconnection

非常简单,或者我认为。

Java代码

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;

public class UrlConnectionTest {

    private static final String TEST_URL = "http://localhost:3000/test/hitme";

    public static void main(String[] args) throws IOException  {

        URLConnection urlCon = null;
        URL url = null;
        OutputStreamWriter osw = null;

        try {
            url = new URL(TEST_URL);
            urlCon = url.openConnection();
            urlCon.setDoOutput(true);
            urlCon.setRequestProperty("Content-Type", "text/plain");            
            osw = new OutputStreamWriter(urlCon.getOutputStream());
            osw.write("HELLO WORLD");

        } catch (Exception e) {
            e.printStackTrace();                
        } finally {
            if (osw != null) {
                osw.close();
            }
        }

    }

}

#的TestController hitme

def hitme
  puts "SOMEONE IS HITTING ME!" * 100
  puts request.env.inspect
end

当我运行Java代码时,我在Rails Server Console中看不到任何内容。但是,当我在浏览器中点击URL时,我会按TestController#hitme中的指定获得输出。我觉得这很简单,但没有运气。有任何想法吗?

提前致谢!

3 个答案:

答案 0 :(得分:1)

你可能会得到一个你没有看到的异常,因为你正在吞咽它。至少在catch块中打印异常。

即使这不是问题,如果你养成吞咽错误的习惯,你也会追逐你的尾巴。


在您致电

之前,我认为您实际上并未发送任何数据
urlCon.getInputStream();

答案 1 :(得分:0)

您的java代码中的URL是否显示控制器名称“test”(test / hitme),但是您提到您的控制器名称是TestController?即,应更改java代码中的URL。

   private static final String TEST_URL = "http://localhost:3000/TestController/hitme";

答案 2 :(得分:0)

不要自己动摇URLConnection,让Resty处理它。

以下是您需要编写的代码(我假设您正在收回文本):

import static us.monoid.web.Resty.*;
import us.monoid.web.Resty;  
...    
new Resty().text(TEST_URL, content("HELLO WORLD")).toString();