0

我想首先说我是 Android 和 java 的新手(在较小程度上)。我有一个客户端-服务器应用程序,客户端是一个 Android 应用程序,服务器正在运行 Tomcat。考虑到我是新手,我对 POST 请求有点困惑。客户端有几个文本字段,用户输入信息并点击一个按钮,该按钮调用一个可以很好地完成 POST 任务的方法。我可以看到服务器从客户端的 POST 表单中接收数据,但我的问题是这些信息(来自表单)去哪里了?它应该创建一个新资源(在本例中为 Person 资源)...这是执行 POST 的 PersonResource 类的代码。

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Person postPerson(MultivaluedMap<String, String> personParams) {
    String firstName = personParams.getFirst(FIRST_NAME);
    String lastName = personParams.getFirst(LAST_NAME);
    String email = personParams.getFirst(EMAIL);

    System.out.println ("System storing: " + firstName + " " + lastName + " " + email);

    person.setFirstName(firstName);
    person.setLastName(lastName);
    person.setEmail(email);

    System.out.println ("person info: " + person.getFirstName() + " " + person.getLastName() + " " + person.getEmail() + " " + person.getId());

    return person;
}

它返回一个人员资源,但最终该人员资源到哪里去了?如果我没有提供解决此问题所需的所有必要信息,我深表歉意。如果需要更多信息,我将很乐意提供。我真的很感激给予的任何帮助。谢谢你。

4

2 回答 2

0

我不确定我是否完全理解这个问题,但这里有一个可能有用的概述:

客户端 POST 向服务器发送 HTTP 请求。服务器必须具有某种处理请求的 Web 服务框架(例如 Jersey 或 CXF 或...)。类上的 JAX-RS 注释(@POST 和 @Consume)指示 Web 服务框架将请求路由到类的postPerson方法。听起来这很有效,是吗?

然后,您的方法会根据表单的内容(即用户输入)构造一个 Person 对象。您的方法将此 Person 返回到 Web 服务框架。

那么这个人会怎么样呢?您提供的 @Produces 注释指示 Web 服务框架生成人员的 JSON 表示并将其包含在发送回客户端的 HTTP 响应的正文中。响应可能如下所示:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 259
{"fistName":"Bob", "lastName":"Barker", "email":"bob_bark@priceisright.com"}

这是你要找的吗?

于 2013-01-02T03:24:48.417 回答
0

您可以使用 HttpPost 提交请求,然后使用 gson 将响应转换回对象。HttpPost 应该放在异步请求(即 AsyncTask)下。你可以参考

http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

异步 HTTP 发布 android

http://code.google.com/p/google-gson/

于 2013-01-02T04:26:21.977 回答