zoukankan      html  css  js  c++  java
  • java servlet手机app访问接口(四)推送

    本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

    https://www.baiydu.com

    一、 服务端DEMO下载及运行。

      登录友盟后,浏览器直接输入下面这个URL,直接进入文档开发和DEMO下载页面:http://dev.umeng.com/push/ios/integration(下面截图)

    1、下载DEMO

     

    2、执行上面步骤后将下载下来的JAVA DEMO导入到Ecplise中,运行

       这里我使用的是java控制台方式来运行DEMO案例,上面的截图右键点击Demo.java运行,默认是执行android的单个手机推送方法,这里我们可以修改,

       因为我测试的是IOS的推送,所以这里在main方法里将运行方法,修改成IOS的单个手机推送方法。下面截图

    下面是修改上面调用方法中的部分参数截图

    这样修改之后,官方的DEMO你就可以直接 右键 DEMO.JAVA运行了。

    返回结果:

    记得友盟创建的对应APP的IP一定要修改成服务器的IP,否则会返回IP错误。

    二、将推送功能集成到Servlet中

         集成这个DEMO我是遇到了多处问题,首先一个自己封装的HTTP请求方法执行就返回500错误,至于是为什么,昨天本想问他们客户,但是由于周末没上班,所以就没管它了,之后使用了官方DEMO中集成的HTTP请求包之后这个问题解决了。

      1、将官方的HTTP请求包增加到Servlet应用中.下面截图

       

      将上面圈中的.jar Copy到项目对应的Apatch-Tomcat 路径下的lib文件夹内,

      接着将下面这几个类引入到对应的Servlet页面中。

    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;

      下面是执行代码:

      

    //友盟推送      
             JSONObject UmentPushIosPrameter=new JSONObject();
    	        try {                                        //对应APP key
    				UmentPushIosPrameter.put("appkey", "568f2ccbe0f55a3e050017?");
    				//下面是将时间转换为时间格式字符串   这里时间戳必须使用10位
    			  	UmentPushIosPrameter.put("timestamp", System.currentTimeMillis()/ 1000);
    			  	//推送类型:单个设备
    				UmentPushIosPrameter.put("type", "unicast");      
    				                                             //测试设备TOKEN
    				 UmentPushIosPrameter.put("device_tokens", "4aecb635c2a43da05eeca57d7e97665df6d7c26f6bd00f6dcfd5c70477b0dd30");
    				UmentPushIosPrameter.put("production_mode", "false");
    				
    				
    				//production_mode
    				 
    				 JSONObject payloadFirstPrameter=new JSONObject();
    				 //自定义键值对 
    			     payloadFirstPrameter.put("name", "阿萨德发射点发");
    			 
    			 
    				 JSONObject apsFirstPrameter=new JSONObject();
    				 //推送内容
    				 String postContent= "阿莱克斯的法律框架";
    				 apsFirstPrameter.put("alert", postContent);
    				 apsFirstPrameter.put("badge", "1");
    				 apsFirstPrameter.put("sound", "default");
    				 
    			     payloadFirstPrameter.put("aps", apsFirstPrameter);
    			     //增加到根节点
    				  UmentPushIosPrameter.put("payload",payloadFirstPrameter);
    				  
    				  //增加到根节点                                                                   
    			  String GetEncryptStr="POST"+"http://msg.umeng.com/api/send"+UmentPushIosPrameter.toString()
    					  +"pa4nfw4hz3mprilryuo2yjdwjlipkv?";//对应的App Master Secret
    					  
    			  //加密
    			    String Ok1 = DigestUtils.md5Hex(GetEncryptStr);
    				      
    			      String  unicastParameter= UmentPushIosPrameter.toString();
    			      StringEntity se = new StringEntity(unicastParameter.toString(), "UTF-8");
    			 String    url = "http://msg.umeng.com/api/send" + "?sign=" + Ok1;
    			      HttpPost post = new HttpPost(url);
    			        post.setHeader("User-Agent", USER_AGENT);
    			     post.setEntity(se);
    			        // Send the post request and get the response
    			        HttpResponse response1 = client.execute(post);
    			        int status = response1.getStatusLine().getStatusCode();
    			        System.out.println("Response Code : " + status);
    			        BufferedReader rd = new BufferedReader(new InputStreamReader(response1.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!");
    			        } 
    			     
    				  
    			} catch (JSONException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
    	        
    

      当然推送方式还有很多种,包括Android的,这些直接去官方文档看,增加对应参数就可以了。

    这里我要说一个我遇到的问题, 拼接MD5加密字符串时遇到的,官方的DEMO是将 App Master Secret:这个拼接参数 .getBytes("utf8")转成Byte类型了的,但是这里我使用相同的方法后,返回一个加密token错误,之后我不将这个参数转换成Byte类型,就通过了。

    
    
     String GetEncryptStr="POST"+"http://msg.umeng.com/api/send"+UmentPushIosPrameter.toString()
    					  +"pa4nfw4hz3mprilryuo2yjdwjlipkv?";//对应的App Master Secret
    
    
    

     

     

     

      本人创业做的一款androidApp, 下载量已经有2000多万,各种当前热门的网络手机奖励红包全部集成,另外还有热门电影和淘宝高额优惠券!很适合各类型的用户。

     

     

  • 相关阅读:
    android闹钟小案例之知识点总结
    转载---程序员发展之路
    android闹钟小案例之功能阐述
    基础篇:2.熟练掌握相关监听器的注册和使用
    基础篇:1.掌握基本组件和容器组件的使用
    微博分享、注销功能的实现
    新浪微博授权认证的实现
    新浪微博分享功能的简单实现
    读《编程高手箴言》笔记一
    Spark内核架构核心组件.txt
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/5120586.html
Copyright © 2011-2022 走看看