2012-05-29 8 views
1

Я провел полдня и с ума сошел, чтобы заставить службу Джерси принять и управлять JSON.Опубликовать JSON to Jersey Запрос

Вот что я делаю: В PHP с использованием 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"); 

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(); 
    } 

В отдельном файле у меня есть мой аннотированный класс:

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; 
    } 
} 

Я получаю неподдерживаемую ошибку типа носителя:

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] => 

Что мне не хватает?

Спасибо всем, Daniele

ответ

1

Я думаю, что вы более усложняя это. Поскольку ваш компонент аннотирован, нет необходимости создавать для него объект json. Это сделано для вас.

return Reponse.ok(addr).build(); 
+0

Спасибо за ваш ответ, помимо вывода, я думаю, что моя проблема заключается в том, чтобы извлечь json на входе. Это то, чего я изо всех сил пытаюсь достичь! – Daniele

+0

До тех пор, пока ваш json-вход структурирован правильно, вы должны быть настроены. Маршаллинг и unmarshalling делается для вас. Если он не работает, попробуйте добавить методы настройки для города/zip, но я не уверен, что они вам нужны. Кроме того, я предполагаю, что вы правильно настроили @Path в своем классе обслуживания? –