Postați JSON la solicitarea Jersey

Am petrecut o jumătate de zi și m-am înnebunit pentru a-mi face serviciul Jersey să accepte și să manipuleze un JSON.

Iată ce fac: În PHP folosind Zend Framework:

$client = new Zend_Http_Client("http://localhost:8080/api/");
    $data = array("city"=> "Paris", "zip" => "1111");
    $json = json_encode($data);     
    $client->setHeaders("Content-type", "application/json");
    $client->setRawData($json, 'application/json')->request("GET");

Metoda API:

@GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)   
    public Response getAPI( Address addr) {
        JSONObject out = new JSONObject();
        out.put("city test",addr.getCity());
        Response response = null;
        return response.ok(out.toString()).header("Accept", "application/json").build();
    }   

Într-un fișier separat am clasa mea adnotată:

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
public class Address
{
    @XmlElement(name="city")
    public String city;
    @XmlElement(name="zip")
    public String zip;

     public String getCity() {
          return city;
     }
}

Am o eroare de tip media neacceptată:

    Zend_Http_Response Object
(
    [version:protected] => 1.1
    [code:protected] => 415
    [message:protected] => Unsupported Media Type
    [headers:protected] => Array
        (
            [Server] => Apache-Coyote/1.1
            [Content-type] => text/html;charset=utf-8
            [Content-length] => 1117
            [Date] => Tue, 29 May 2012 17:55:03 GMT
            [Connection] => close
        )

    [body:protected] =>  

Ce am lipsit?

Va multumesc tuturor, Daniele

1

1 răspunsuri

Cred că ai complicat asta. Deoarece fasolea dvs. este adnotată, nu este nevoie să creați un obiect json pentru aceasta. Asta sa întâmplat pentru tine.

return Reponse.ok(addr).build();
1
adăugat
Vă mulțumim pentru răspunsul dvs., în afară de ieșire, cred că problema mea este de a prelua json în intrare. Aceasta este ceea ce mă străduiesc să realizez!
adăugat autor Daniele, sursa
Atâta timp cât intrarea dvs. json este structurată corect, ar trebui să vă setați toate. Pregătirea și înălțarea se fac pentru tine. Dacă nu funcționează, încercați să adăugați metode de setare pentru oraș/zip dar nu sunt sigur că aveți nevoie de ele. De asemenea, presupun că ați instalat corect metoda @Path pe clasa de servicii?
adăugat autor Rick Mangi, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com