2016-01-03 53 views
0

我正在嘗試使用pushbots發送推送通知。當我使用cURL時,它正在工作,但是我怎麼能從我的java服務器實現呢? ,我想送的捲曲腳本是這樣的:訪問java中的pushbots REST API

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值。我怎麼能做到這一點?

感謝您的時間, 達芬奇

+0

你應該發佈你的最佳嘗試來解決這個問題,使用標準的Java REST庫。 – Will

回答

1

好像所有您需要做的僅僅是HTTP請求。當然你可以用Java來實現這一點,並且從Java調用curl並不是實現它的好方法。最好的方法是使用一些庫來處理HTTP。例如,您可以使用Apache HttpClient,這很不錯。你可以學習如何使用這個庫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()); 

你需要捕捉一些異常也(ISN在這個代碼中) - IOExceptionUnsupportedEncodingException

+0

我會試試這個。我的問題是我對http很不好。 –

+0

@Vinci我用一些示例代碼更新了我的答案,試試吧。 Ofc需要首先將HttpClient jar添加到您的類路徑中(請參閱答案中的鏈接)。 – coolguy

+0

這其實並不難(我已經有了一些Apache HTTPClient的經驗) –