dow98764 2015-09-11 15:20
浏览 86

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

I am using a PHP RESTful API which is consumed by a Java desktop application using jersey 2.21.

Usually, when I send a POST request from AngularJS, I can access the data via:

$data = json_decode(file_get_contents("php://input"));

However, when I use jersey, the data is put in the $_POST array. Here is my Jersey code:

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;

How do I post the data from Jersey so that I can access it via the above PHP call?

I know I can just use the $_POST array, but I need this API to be consumed from a mobile app, Java desktop & an AngularJS app.

Thanks in advance

  • 写回答

1条回答 默认 最新

  • dongqing8765 2015-09-11 15:31
    关注

    Thanks to @jonstirling, I got it.

    I had to set the content type as JSON. here is the updated code:

    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;
    
    评论

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名