Я использую PHP RESTful API, который используется настольным Java-приложением с использованием jersey 2.21.
Обычно, когда я отправляю запрос POST от AngularJS, я могу получить доступ к данным через:
$data = json_decode(file_get_contents("php://input"));
Тем не менее, когда я использую майку, данные помещаются в $_POST
массив. Вот мой код Джерси:
final HashMap<String, String> params = // some hashmap with a few entries
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
MultivaluedMap formData = new MultivaluedHashMap(params);
WebTarget target = client.target(url);
// Get JSON
String jsonResponse = target.request(MediaType.APPLICATION_JSON_TYPE).post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED_TYPE), String.class);
return jsonResponse;
Как опубликовать данные с Джерси, чтобы я мог получить к ним доступ через вышеупомянутый вызов PHP?
Я знаю, что могу просто использовать $_POST
массив, но мне нужно, чтобы этот API использовался из мобильного приложения, рабочего стола Java & приложение AngularJS.
заранее спасибо
Благодаря @jonstirling, я понял.
Я должен был установить тип контента как JSON. вот обновленный код:
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
WebTarget target = client.target(url);
String data = new Gson().toJson(params);
// POST JSON
Entity json = Entity.entity(data, MediaType.APPLICATION_JSON_TYPE);
Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON_TYPE);
String jsonResponse = builder.post(json, String.class);
return jsonResponse;
Других решений пока нет …