我正在寻找一种从服务器(用 Java 编写的亚马逊 ec2 实例)中的 Android 客户端(用 Java 编写)调用方法的方法。我正在寻找类似 play 框架的东西,我可以在其中编写带有方法名称的 GET 请求(比方说,calculateHighScore),并在 paths.config 中设置 get 方法以从服务器执行calculateHighScore 方法。
我已经阅读了有关 volley 及其通过 JSON 进行通信的方式,但仍然不明白我应该在服务器端编写什么来执行特定方法并返回适当的响应。
最佳答案
您可以尝试使用Jersey RESTful 服务库。
例如,在您的服务器上,您可以有一些如下代码:
@Path("/your_class")
public class YourClass {
[...]
@POST
@Path("/your_method")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Object> yourMethod(String input){
[...]
return new ArrayList<Object>();
}
}
在客户端,您可以使用如下代码:
[...]
ServiceFinder.setIteratorProvider(new AndroidServiceIteratorProvider());
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
clientConfig.getClasses().add(JacksonJsonProvider.class);
Client client = Client.create(clientConfig);
WebResource webResource = client.resource("http://yoursite.net:8080/NameOfService/rest/your_class/your_method");
ClientResponse response = webResource.accept("application/json").post(ClientResponse.class,"your input");
ArrayList<Object> list = response.getEntity(new GenericType<ArrayList<Object>>() {});
[...]
还有this是一个很好的教程,可以帮助您使用 Jersey 及其库。
关于java - 在 Android Java 中从客户端使用 GET\POST 调用服务器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496662/