简体   繁体   中英

HTTP request doesn't work with a paricular rest

I'm making an application filled with various rest services, so I create a one-for-all HTTP class in order to allow a client application to keep asking information, via rest, to a server application

public HttpURLConnection HTTPSENDJSON(String urlAPI,String out,String requestmethod) throws IOException {
            URL url = new URL(urlAPI);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestMethod(requestmethod);
            conn.setDoOutput(true);
            conn.setDoInput(true);
            OutputStream os = conn.getOutputStream();
            System.out.println(out);
            os.write(out.getBytes());
            os.flush();
            os.close();
            return conn;

urlAPI is the desired URL, a string is the JSON string (I'm using GSON) and the requestmethod is a string in order to switch from PUT\\POST\\GET\\PATCH.

So, as I wrote, it's all ok if I need to retrieve information from DB\\insert a new record ATM my Client application makes a call to the server who calls an EJB in order to CRUD the information. this is the Client method who call the upper method (the HTTPSENDJSON )

public String modifica() throws IOException {
        Universal_HTTPREQUEST httprequest = new Universal_HTTPREQUEST();
        String url= "http://localhost:8080/ModuloWebClientNuovo/rest/clientela/modifica/account/"+ac.getId()+"";
        Gson g = new Gson();
        String out=g.toJson(ac, Account.class);
        httprequest.HTTPSENDJSON(url, out,"PUT"); 

and this is the working (at least with POSTMAN) services

@PUT
    @Path("modifica/account/{id}")  
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Response modificaaccount(@PathParam("id") int id,Account a) {
        System.out.println("i'm inside the api and i wrote: "+ a.toString());
        ac.updateAccount(a);
        return Response.status(200).entity(a).build() ;
    }

The Client doesn't even make the call to the server, BUT the only with this specific rest, other works fine.

update account EJB is:

@Stateless
public class AccountEJB implements IAccountCrud {

    @EJB
    Iconnessioni x;

    @Override
    public void updateAccount(Account account) {
        EntityManager entityManager=x.apriconnessione();
        entityManager.merge(account);
        x.chiudiconnessione(entityManager);
    }
}

修复了一个新的从头开始的野蝇

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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