Я пытаюсь вызвать 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] всегда равен нулю.