繁体   English   中英

从Android应用程序调用restfull Web服务

[英]Call restfull webservice from android application

请支持我!

Web服务(球衣宁静):

@POST
@Path("/login")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_HTML)
public String login(
        @QueryParam("name") String name,
        @QueryParam("password") String password) {
    System.out.println("[login] name: " + name);
    System.out.println("[login] password: " + password);
}

Android应用程式:

StringRequest insertRequest = new StringRequest(Request.Method.POST, Config.BASE_URL + login, new Response.Listener<String>() {
// ...
 @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("name", name);
            params.put("password", pass);
            return params;
        }
@Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            return headers;
        }

在服务器中,我收到的名称和密码为null。 发生什么事了?

@QueryParam不能与json一起使用,它在URI部分中。 例如users/query?from=100&to=200&orderBy=age&orderBy=name ,此URI的查询参数将是from to orderBy

要使用json,您将需要对传入的JSON执行Object Mapper或接受输入为String并将其转换为json。

这是一个示例: Jersey + Jackson的JSON示例

自我转换为json的代码(使用Gson) Maven存储库为GSON

@POST
@Path("/login")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_HTML)
public String login(String jsonData) {
    JsonParser parser = new JsonParser();
    JsonObject o = parser.parse(jsonData).getAsJsonObject();
}

邮递员工作的原因可能是因为您实际上正在发送x-www-form-urlencoded 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM