2012-04-19 93 views
0

我希望使用RestEasy框架的仅接口选项,因为它更清洁,应该可以工作。Resteasy FrameWork POST不起作用

但我在POST请求中传递参数有问题。

我发现的文档在这个例子:

@PUT 
@Path("basic") 
@Consumes("text/plain") 
void putBasic(String body); 

以及调用:

import org.jboss.resteasy.client.ProxyFactory; 
// ... 

// this initialization only needs to be done once per VM 
RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); 

SimpleClient client = ProxyFactory.create(SimpleClient.class, "http://localhost:8081"); 
client.putBasic("hello world"); 

我已经试过如下:

@POST 
@Consumes(MediaType.TEXT_PLAIN) 
@Path("http://localhost:8080/app/resource") 
String postBasic(String body); 

和调用:

RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); 

RepoClient client = ProxyFactory.create(RepoClient.class, ""); 
client.postBasic("hi"); 

在调用servelet的doPost方法上打印参数Map(并调试它)时,参数为空。我真的看不出我的方法和记录的方法之间的区别(这里是:Resteasy interface example)。

所以总结一下,只使用接口声明和代理实现,我怎样才能发送POST参数?

解决方案:这是预期的......只需要使用接收到的参数相应地声明消耗就可以了......问题是在另一个servlet中调用servlet的POST方法。

回答

1

在您的POST示例中,@Path不能包含绝对URL。尝试仅放入/app/app/resource,具体取决于您的配置。

+0

刚刚尝试过......该servlet实际上被称为...但没有请求参数 – 2012-04-19 16:00:40

+1

您是否在不同的可执行文件中调用服务器?请注意,您创建了一个带有*空*基本URL的ProxyFactory,它是否真的通过网络连接到服务器? – 2012-04-19 16:22:35

+0

我会检查是否在servlet中调用post方法可能是问题 – 2012-04-19 16:26:13

0

正如怀疑论者所说,@Path应该是一个相对的URL,我只有泽西岛的经验,并且我不熟悉Resteasy,但我认为这将是相同的。

您的类将拥有@Path注释,并且其中的方法可以具有@Path注释。

所以,如果你有这样的事情:

@POST 
    @Path("Foo")  
    public class Foo() 
    { 
     @POST 
     @Path("Bar") 
     public String Bar() 
     { 
     ... 
     } 
    } 

所以一个POST到http://localhost:8080/Foo/Bar将执行方法吧。

我的评论越来越长,所以我只是在这里解决它。

对不起,我没有看到你对怀疑者的评论后发布。你打算使用@FormParam的例子吗?

考虑,我是新来的休息,但到目前为止一切@POST方法已为使用@PathParam或@FormParam和你的方法是这样的:

@Post 
    @Path("Foo/{foobar}") 
    public String Bar(@PathParam("foobar") String foobar) 
    { 
    } 

或类似

@Post 
    @Path("Foo") 
    public String Bar(@FormParam("foobar") String foobar) 
    { 
    } 
+0

该问题与@Path无关...... servlet中的post方法被调用,但字符串参数不是传递给它 – 2012-04-19 16:14:20

+0

对不起,我没有看到你对怀疑者的评论后发布。你打算使用@FormParam的例子吗? – Corwin01 2012-04-19 16:16:19

+0

nop ...看看我发布的链接...这是一个简单的帖子 – 2012-04-19 16:19:28