Android Volley POST для Java EE не работает - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь вызвать POST-метод на моем устройстве Android для моего веб-приложения Java EE.Java версии 8, приложение для Android на уровне API 22, и я использую виртуальное устройство на моем компьютере.Я могу добавить запрос в очередь залпа, но тогда он не разрешит мой запрос POST.

Это CustomerService в приложении Java EE:

@EJB
CustomerBean customerBean;

@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/registration")
public Long registration(@FormParam("email") String email, @FormParam("password") String pw) {
    Customer c = customerBean.registration(email, pw);
    if(c == null) {
        return (long) 0;
    }
    return c.getId();
}

И этовызванный метод на CustomerBean:

@PersistenceContext
private EntityManager em;

public Customer registration(String email, String password) { 

    Customer c = (Customer) em.createQuery("FROM " + Customer.class.getSimpleName() + " c WHERE c.email = :email")
            .setParameter("email", email).getSingleResult();

    if(c == null) {
        c = new Customer();
        c.setEmail(email);
        c.setPassword(password);
        em.persist(c);
        em.flush();
        return c;
    }
    else {
        return null;
    }
}

И это мой Android-клиент, который отправляет запрос POST (MainActivity):

private Long api_regist(final String email, final String password) throws IOException {

    RequestQueue queue = Volley.newRequestQueue(this);
    String url = "http://10.0.2.2:8080/onlineshop-web/api/customer/registration";
    final String[] result = new String[1];
    StringRequest postRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response) {
                    // response
                    Log.d("Response", response);
                    result[0] = response;
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // error
                    Log.d("Error.Response", error.toString());
                }
            }
    ) {
        @Override
        protected Map<String, String> getParams()
        {
            Map<String, String>  params = new HashMap<String, String>();
            params.put("email", email);
            params.put("password", password);

            return params;
        }
    };
    queue.add(postRequest);
    while (result[0] == null){
        Log.d("Result:", " Empty");
    } //TODO return value afterwards

Таким образом, результат [0] всегда равен нулю.

...