cómo pasar de objeto java como un parámetro en el descanso del webservice

Registration_BE contiene muchas variables como myvariable. Quiero conseguir reg_be todos variable en aquí. Como esto me tiene que pasar a mi objeto.

servlet:

http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be="+reg_be

webservice:

public String getText(@PathParam("reg_be") Registration_BE reg_be ) {
   System.out.println("websevice:" +reg_be.myvariable);      
    return reg_be.myvariable;
}

El código anterior produce esta Excepción:

com.sun.jersey.spi.inject.Errors$ErrorMessagesException.....

¿Cómo puedo solucionar este problema?

  • Se puede publicar más de la stacktrace pls?
  • es reg_be una Cadena json? puedes probar a hacer el unmarshalling del objeto en prueba pequeña/principal snipplet con la ayuda de json parser?! Eche un vistazo a esta entrada del blog
  • no tat no es una cadena json. tat es objeto de java
  • En primer lugar, el parámetro que está pasando es un @QueryParam("reg_be"), no @PathParam, y en segundo lugar no creo que usted puede transmitir un objeto, de esta manera, en la url, no es el objeto que se concatena pero el resultado de su toString método. Ya sea que usted pase el ID de objeto y recuperar de su sistema de identificación en su método getText, o usted tendrá que transmitir como el cuerpo de un POST solicitud codificados con Json, XML, …
  • Rajiv esto es lo que usted pide? SEVERO: Servlet /UnionClubWS tiró de carga() excepción com.sol.jersey.spi.inyectar.Los errores de$ErrorMessagesException en com.sol.jersey.spi.inyectar.Errores.processErrorMessages(los Errores.java:170) en com.sol.jersey.spi.inyectar.Errores.el postproceso(los Errores.java:136) en com.sol.jersey.spi.inyectar.Errores.processWithErrors(los Errores.java:199) en com.sol.jersey.servidor.impl.aplicación.WebApplicationImpl.iniciar(WebApplicationImpl.java:765) en
  • gracias u para ur respuesta gma.en queryparam también no está funcionando. ¿cómo puedo pasar el id del objeto y recuperar en el método gettext?

InformationsquelleAutor sabarirajan | 2013-06-11

2 Kommentare

  1. 4

    Hay tres típicas opciones disponibles para usted.

    Pasar variables de objeto en la solicitud de

    Esto es útil si usted no tiene un gran número de variables, o la necesidad de la capacidad para rellenar sólo un subconjunto de los campos en Registration_BE.

    Si quieres pasar las variables en la solicitud como en un típico POST, usted tendrá que hacer algún tipo de procesamiento para construir el complejo Registration_BE objeto, en primer lugar:

    public String getText(@RequestParam("reg_be.myvariable") String myvariable) {
       Registration_BE reg_be = new Registration_BE(myvariable);
    
       System.out.println("websevice:" +reg_be.myvariable);
    
       return reg_be.myvariable;
    }

    Y que se le puede llamar con:

    http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be.myvariable=myvalue

    O, alternativamente, pasando en una matriz de variables:

    public String getText(@RequestParam("reg_be.myvariable") String[] myvariables) {
       Registration_BE reg_be = new Registration_BE(myvariables);
    
       System.out.println("websevice:" +reg_be.myvariable);
    
       return reg_be.myvariable;
    }

    Y que se le puede llamar con:

    http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be.myvariable=myvalue1&reg_be.myvariable=myvalue2

    El uso de un formato de intercambio de datos

    La segunda opción sería la de pasar su objeto de registro como JSON (o XML). para esto, usted necesita a habilitar el Jackson mensaje del convertidor de y asegúrese de que el Jackson biblioteca es en su classpath:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <mvc:annotation-driven />
    
    </beans>

    Su método no cambiaría:

    public String getText(@RequestParam("reg_be") Registration_BE reg_be ) {
    
       System.out.println("websevice:" +reg_be.myvariable);
    
       return reg_be.myvariable;
    }

    Y ahora se puede llamar con:

    http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be={"myvariable":"myvalue"}

    Mensaje personalizado conversor de

    Su tercera, y la más compleja, la opción sería crear su propio mensaje de convertidor. Esto le daría más flexibilidad (su solicitud puede ser de cualquier forma que te gusta), pero implicaría mucho más repetitivo sobrecarga para hacer que funcione.

    A menos que usted tiene un requisito muy específico sobre cómo el paquete de solicitud debe ser construida, te recomiendo optar por una de las opciones anteriores.

    • gracias u seanhodges. pero me tiene 60 variables, a continuación, i hav a dar 60 varibles en la url. tan sólo tirar de objetos java.puedo conseguir todos mis variable en webservice.y he intentado en arraylist también tat también error de tiro.u cómo pasar arraylist.como reg_be=reg_bearray;
    • OK, así que mi primera sugerencia no es adecuado para lo que usted está tratando de hacer. ¿Qué acerca de mi segunda sugerencia usando JSON?
    • He actualizado mi pregunta para incluir cómo se puede pasar un array en su solicitud.
    • ok seanhodges me voy con la ur 1ª o 2ª optar, pero yo teniendo inputstream para una imagen ¿cómo puedo enviar tat con ur método?.no sé cómo enviar inputstream para servicio restful. decir una cosa: gracias ayuda
    • Desea cargar el archivo primero y, a continuación, hacer referencia a ella. Este tutorial para ayudarle a empezar, después de que usted puede agregar una dirección URL a la imagen subida en su «getText» petición.
  2. 2

    Si quieres paas su objeto como camino-param o consulta-param entonces usted necesita para pasar como cadena. Para este convertir el objeto en una cadena JSON y pasar como una consulta param. Para este aquí es una mejor manera de usar JSON.

    Uno más mejor opción es que hacer su solicitud POST. Y enviar su objeto POST método. Por favor, lea este para @FormParam.

    • primero gracias por tu respuesta.pero en mi formulario i 60 campos.así que tengo todo en mi servlet mediante el uso de métodos getter y setter.así atlast i objeto java.entonces tengo que pasar a mi webservice, a continuación, quiero guardar en la db.si me dan 60 de campo en @queryparam que todos los trabajos que yo conozco. pero quiero que el uso de objetos. i hav a lanzar en el servlet, a continuación, quiero recibir en mi webservice para tat u puede dar ninguna solución fácil plzzzzzz
    • No se puede pasar a su Objeto de Java para la consulta de param. Usted debe convertir el objeto de java en Cadena JSON y, a continuación, pasar en consulta param. Usted no tiene que emitir manualmente objeto en Cadena JSON. Ya hay creado Jackson Biblioteca que wil convertir el Objeto a Cadena JSON y viceversa.
    • hmmm ok Abhendra Singh i inputstream para una imagen.lo he intentado como te dije antes.intento encubierto mi obj a json string.by gson pero me muestra error bcoz de tat inputstream.tan sólo he probado con objeto de java.ok puede decir cómo pasar del flujo de entrada en el descanso?
    • Puede separar su imagen de su objeto? porque tenemos una manera de pasar el flujo de Entrada o subir un archivo al resto del webservice. Compruebe por favor este y this tutorial. Creo que va a trabajar para usted. Usted simplemente por la necesidad de separar la imagen de su objeto.
    • Y una cosa más que puedes hacer es decir, convertir su imagen en una matriz de bytes. Y de paso esta matriz de bytes como cadena JSON. Como this

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea