package com.dsh.utils.push; import org.apache.commons.codec.digest.DigestUtils; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import java.io.BufferedReader; import java.io.InputStreamReader; public class PushClient { // The user agent protected final String USER_AGENT = "Mozilla/5.0"; // This object is used for sending the post request to Umeng protected HttpClient client = new DefaultHttpClient(); // The host protected static final String host = "http://msg.umeng.com"; // The upload path protected static final String uploadPath = "/upload"; // The post path protected static final String postPath = "/api/send"; public boolean send(UmengNotification msg) throws Exception { String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000)); msg.setPredefinedKeyValue("timestamp", timestamp); String url = host + postPath; String postBody = msg.getPostBody(); String sign = DigestUtils.md5Hex(("POST" + url + postBody + msg.getAppMasterSecret()).getBytes("utf8")); url = url + "?sign=" + sign; HttpPost post = new HttpPost(url); post.setHeader("User-Agent", USER_AGENT); StringEntity se = new StringEntity(postBody, "UTF-8"); post.setEntity(se); // Send the post request and get the response HttpResponse response = client.execute(post); int status = response.getStatusLine().getStatusCode(); System.out.println("Response Code : " + status); BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer result = new StringBuffer(); String line = ""; while ((line = rd.readLine()) != null) { result.append(line); } System.out.println(result.toString()); if (status == 200) { System.out.println("Notification sent successfully."); } else { System.out.println("Failed to send the notification!"); } return true; } // // Upload file with device_tokens to Umeng // public String uploadContents(String appkey,String appMasterSecret,String contents) throws Exception { // // Construct the json string // JSONObject uploadJson = new JSONObject(); // uploadJson.put("appkey", appkey); // String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000)); // uploadJson.put("timestamp", timestamp); // uploadJson.put("content", contents); // // Construct the request // String url = host + uploadPath; // String postBody = uploadJson.toString(); // String sign = DigestUtils.md5Hex(("POST" + url + postBody + appMasterSecret).getBytes("utf8")); // url = url + "?sign=" + sign; // HttpPost post = new HttpPost(url); // post.setHeader("User-Agent", USER_AGENT); // StringEntity se = new StringEntity(postBody, "UTF-8"); // post.setEntity(se); // // Send the post request and get the response // HttpResponse response = client.execute(post); // System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); // BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); // StringBuffer result = new StringBuffer(); // String line = ""; // while ((line = rd.readLine()) != null) { // result.append(line); // } // System.out.println(result.toString()); // // Decode response string and get file_id from it // JSONObject respJson = new JSONObject(result.toString()); // String ret = respJson.getString("ret"); // if (!ret.equals("SUCCESS")) { // throw new Exception("Failed to upload file"); // } // JSONObject data = respJson.getJSONObject("data"); // String fileId = data.getString("file_id"); // // Set file_id into rootJson using setPredefinedKeyValue // // return fileId; // } }