我正在寻找一种方法来调用我的android客户端(用Java编写)在服务器中的方法(用Java编写的amazon ec2的实例)。我正在寻找像play框架这样的东西,我可以用方法名称编写一个GET请求(比方说,calculateHighScore),在routes.config中我设置get方法从服务器执行calculateHighScore方法。
我已经阅读了JSON的volley及其通信方式,但我仍然不明白我应该在服务器端编写什么来执行特定方法并返回适当的响应。
答案 0 :(得分:1)
您可以尝试使用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及其库。
答案 1 :(得分:0)
设计一个API来处理来自Android客户端的GET
和POST
请求的响应。 Api必须处理来自android客户端的所有查询。
例如,如果您想要整体High Score
,客户端将发送如下请求:
test.com/api/?m="calculateHighScore"
现在,您的api将从您的网址中提取参数,然后通过High Score
发送回复进行回复。
您可以在此处详细了解API Design。还有更多here。