2015-09-11 3 views
0

Я использую API RESTful PHP, который используется настольным приложением Java с использованием джерси 2.21.PHP RESTful API, доступ к данным клиента POST Джерси

Обычно, когда я отправить запрос 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.

Заранее спасибо

+0

Угадайте намек. Ваша проблема - «MediaType.APPLICATION_FORM_URLENCODED_TYPE». –

+0

Эй, @JonStirling, я думал, что это как-то связано с заголовком. Попытка выяснить, как настроить заголовки JSON сейчас. –

+0

Опять же, предположение (я не использую java, не говоря уже о Джерси), но вы можете быть после 'MediaType.APPLICATION_JSON_TYPE', предполагая, что вы фактически передаете JSON, чего ожидает ваше приложение PHP. –

ответ

0

Благодаря @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; 
Смежные вопросы