2017-10-19 6 views
-1

Je souhaite que mon serveur envoie une erreur indicative au client angulaire js.angulaire js ne parvient pas à analyser la réponse jax-rs

J'ai vu ces exemples:

Example 7 
Project: spice File: RequestService.java View source code 6 votes vote down vote up 
@GET 
@Path("date") 
@Produces("text/plain") 
public Response get(@Context Request request) { 
    final Date modificDate = getLastModificationDateFromDatastore(); 
    final EntityTag entityTag = getEntityTagFromDatastore(); 
    final ResponseBuilder resp = request.evaluatePreconditions(modificDate, 
      entityTag); 
    if (resp != null) { 
     return resp.build(); 
    } 
    // Build new Response 
    final ResponseBuilder responseBuilder = Response.status(200); 
    responseBuilder.entity("This is the Entity from " + modificDate); 
    responseBuilder.lastModified(modificDate); 
    responseBuilder.tag(entityTag); 
    return responseBuilder.build(); 
} 

et

Example 8 
Project: zeppelin File: JsonResponse.java View source code 4 votes vote down vote up 
public javax.ws.rs.core.Response build() { 
    ResponseBuilder r = javax.ws.rs.core.Response.status(status).entity(this.toString()); 
    if (cookies != null) { 
    for (NewCookie nc : cookies) { 
     r.cookie(nc); 
    } 
    } 
    return r.build(); 
} 

mais quand mon code serveur envoie:

catch (Exception ex) 
{ 

    String error = "RuntimeException: test11"; 
    logger.error("update voice filed. Error: "+error); 

    return Response.serverError().entity(error).build(); 
} 

dans le code client Je ne trouve pas ce message d'erreur:

  $http.put('api/foo', {voice : voice, isAddMode : isAddMode}).then(
       function successCallback(response) { 
.. 
       }, function errorCallback(response) { 
        var responseStr = JSON.stringify(response) 
        console.log(responseStr); 
        deferred.reject(responseStr); 
       }); 

Je reçois une erreur d'analyse, mais en général, je ne trouve pas le bon membre dans js.

SyntaxError: Unexpected token R in JSON at position 0 
    at JSON.parse (<anonymous>) 
    at fromJson (angular.js:1377) 
    at defaultHttpResponseTransform (angular.js:11003) 
    at angular.js:11094 
    at forEach (angular.js:357) 
    at transformData (angular.js:11093) 
    at transformResponse (angular.js:11914) 
    at processQueue (angular.js:16648) 
    at angular.js:16692 
    at Scope.$eval (angular.js:17972) 
+0

Angular essaie d'analyser 'RuntimeException: test11' qui n'est pas valide JSON –

Répondre

0

J'ai dû enlever l'annotation "Produces" sur le côté serveur:

@Path("/foo") 
    @PUT 
    @Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8") 
// @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") 

Ensuite, un objet JSON a été envoyé à partir du serveur et non seulement la chaîne.