从 java 访问推送机器人 REST Api

Access the pushbots REST Api from java

我正在尝试使用推送机器人发送推送通知。当我使用 cURL 时它工作正常,但我如何从我的 java 服务器实现它? 我要发送的 curl 脚本是这样的:

curl -X POST \
-H "x-pushbots-appid: 54cc0a511d0ab13c0528b459d" \
-H "x-pushbots-secret: 1444fe8be3324ff7128f25aa18cdee12" \
-H "Content-Type: application/json" \
-d '{"platform" : 1 , "msg" : "hi from Api" , "payload" : {"largeIcon":"https://lh3.googleusercontent.com/-2bMJQbKLNRQ/AAAAAAAAAAI/AAAAAAAA_nc/SYnugOyXboE/s120-c/photo.jpga" }}' \
https://api.pushbots.com/push/all

使用 Runtime.getRuntime().exec(""); 不是一个选项,因为我必须响应它,这意味着我希望能够更改 msg json 值。我怎样才能做到这一点?

感谢您的宝贵时间, 芬奇

似乎您所要做的只是 HTTP 请求。当然,您可以使用 Java 实现此目的,而从 Java 调用 curl 并不是实现此目的的好方法。最好的方法是使用一些库来处理 HTTP。例如,您可以使用 Apache HttpClient which is pretty good. You can learn how to use this library here(不要害怕文档的大小,您只需要基本功能)。

P.S。如果我理解正确的话,Android 标签在这里不合适。

UPD 这是您的案例的一些代码(我没有测试它,但希望它能帮助您):

HttpClient client = HttpClients.createDefault();
HttpPost request = new HttpPost("https://api.pushbots.com/push/all");
request.addHeader("x-pushbots-appid", "54cc...");
request.addHeader("x-pushbots-secret", "1444...");
request.addHeader("Content-Type", "application/json");
request.setEntity(new StringEntity("{your request body here}"));
HttpResponse response = client.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
String responseBody = EntityUtils.toString(response.getEntity());

您还需要捕获一些异常(不在此代码中)- IOExceptionUnsupportedEncodingException