PHP RESTful API访问Jersey客户端POST数据

时间:2015-09-11 15:20:40

标签: java php rest jersey jersey-2.0

我正在使用PHP RESTful API,它由使用jersey 2.21的Java桌面应用程序使用。

通常,当我从AngularJS发送POST请求时,我可以通过以下方式访问数据:

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

如何从Jersey发布数据,以便我可以通过上面的PHP调用访问它?

我知道我可以使用$_POST数组,但我需要从移动应用程序,Java桌面和数据库中使用此API。一个AngularJS应用程序。

提前致谢

1 个答案:

答案 0 :(得分: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;