我正在使用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应用程序。
提前致谢
答案 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;