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
Спасибо за ваш ответ, помимо вывода, я думаю, что моя проблема заключается в том, чтобы извлечь json на входе. Это то, чего я изо всех сил пытаюсь достичь! – Daniele
До тех пор, пока ваш json-вход структурирован правильно, вы должны быть настроены. Маршаллинг и unmarshalling делается для вас. Если он не работает, попробуйте добавить методы настройки для города/zip, но я не уверен, что они вам нужны. Кроме того, я предполагаю, что вы правильно настроили @Path в своем классе обслуживания? –