我希望使用 RestEasy 框架的仅界面选项,因为它更干净并且应该可以工作。
但是我在 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");
doPost
在调用的servelet的方法上打印参数Map(并调试它)时,参数为空。我真的看不出我的方法和记录在案的方法之间的区别(来自这里:Resteasy interface example)。
所以总结一下,只使用接口声明和代理实现如何发送POST参数?
解决方案:正如预期的那样......只需要使用接收到的参数相应地声明消耗,它就可以工作......问题是在另一个servlet中调用servlet的POST方法。