实现 GCM 时如何从 Android 应用程序调用服务器应用程序 servlet 来注册设备

2023-11-29

我正在尝试从 Android 开发者网站了解 GCM。我已经按照以下说明实现了客户端 Android 应用程序http://developer.android.com/google/gcm/client.html和 http 服务器应用程序(不是基于 XMPP 的服务器应用程序),遵循以下网址的说明http://developer.android.com/google/gcm/http.html。我使用的代码是从下载的https://code.google.com/p/gcm/正如他们所提到的。 GCM注册功能在我的手机上完美运行。

现在的问题是,我如何将手机的注册ID发送到我的http服务器应用程序。我知道我应该在 android 应用程序的 DemoActivity.java 文件中的 sendRegistrationIdToBackend() 中放置一些代码,以便简单地调用我的服务器应用程序上的 RegisterServlet。但我对 java 和 android 很陌生,只是不知道该怎么做。任何有关我如何编写这段代码的建议将不胜感激。


以下是使用 HTTP GET 请求将注册 ID 发送到服务器的示例代码。我正在使用的课程org.apache.http.*图书馆。它假设您的服务器上有一个页面,该页面接受名为 regId 的参数中的注册 ID(在示例中,它是jsp页面,但它可以是PHP服务器中的任何内容)。您必须添加错误处理代码并解析服务器响应才能完成此示例。

  String responseString= null;

  try {
    URI url            = new URI ("http://your-server-domain/your-server-page.jsp?regId="+THE_REGISTRATION_ID);
    HttpGet httpGet    = new HttpGet (url);
    // defaultHttpClient
    HttpParams
      httpParameters   = new BasicHttpParams();

    // Set the timeout in milliseconds until a connection is established.
    // The default value is zero, that means the timeout is not used. 
    int
      timeoutConnection= 3000;
    HttpConnectionParams.setConnectionTimeout (
      httpParameters,
      timeoutConnection
                         );

    // Set the default socket timeout (SO_TIMEOUT) 
    // in milliseconds which is the timeout for waiting for data.
    int timeoutSocket  = 5000;
    HttpConnectionParams.setSoTimeout (
      httpParameters,
      timeoutSocket
                         );

    DefaultHttpClient
     httpClient        = new DefaultHttpClient (httpParameters);

    HttpResponse
      httpResponse     = httpClient.execute (httpGet);
    HttpEntity
      httpEntity       = httpResponse.getEntity ();

    if (httpResponse.getStatusLine().getStatusCode() != 200)
    {
      Log.e (
        _context.getString(R.string.app_name),
        "Server Call Failed : Got Status Code " + httpResponse.getStatusLine().getStatusCode() + " and ContentType " + httpEntity.getContentType().getValue()
                         );
      // add code to handle error
    }

    responseString     = EntityUtils.toString (httpEntity);
  } catch (UnsupportedEncodingException e) {
    Log.e(_context.getString(R.string.app_name),e.toString(),e);
    // add code to handle error
  } catch (ClientProtocolException e) {
    Log.e(_context.getString(R.string.app_name),e.toString(),e);
    // add code to handle error
  } catch (IOException e) {
    Log.e(_context.getString(R.string.app_name),e.toString(),e);
    // add code to handle error
  } catch (URISyntaxException e) {
    Log.e(_context.getString(R.string.app_name),e.toString(),e);
    // add code to handle error
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现 GCM 时如何从 Android 应用程序调用服务器应用程序 servlet 来注册设备 的相关文章

随机推荐

  • 使用两个 Android 应用程序的内容提供程序示例

    我想要insert or delete我当前的 Android 应用程序中另一个 Android 应用程序数据库中的值 我搜索了很多 大家都说用 content provider 它不与两个应用程序一起使用 所有两个应用程序都在一个应用程序
  • android:largescreens: = "true" 的属性值语法无效

    我正在开发一个 android 应用程序 minSdkVersion 为 11 targetSdkVersion 为 17 我正在为多种屏幕尺寸设计这个应用程序 所以我将对所有屏幕的支持放在清单文件中 我希望这个应用程序支持所有密度 我的
  • scikit-learn 中的 class_weight 参数如何工作?

    我很难理解如何class weightscikit learn 的逻辑回归中的参数运行 情况 我想使用逻辑回归对非常不平衡的数据集进行二元分类 这些类别被标记为 0 阴性 和 1 阳性 观察到的数据比例约为 19 1 大多数样本具有阴性结果
  • 使用 javascript 提取支持的 HTML 或 X11 颜色名称及其 RGB 值的列表

    有一些地方可以获取列表HTML or X11 颜色名称及其 RGB 等效项 例如我们可以发现 Aquamarine 是 70DB93 想必浏览器知道这些映射 有没有办法使用 javascript 询问浏览器并获取它支持的颜色名称列表 以及浏
  • SQL Server 连接超时

    我可以通过修改连接字符串来增加超时时间吗web config 是的 您可以附加 Connection Timeout 30给你的连接字符串并指定您想要的值 中设置的超时值Connection Timeout财产是一个以秒表示的时间 如果未设
  • Android ListView y 位置

    看起来 ListView 不像 ScrollView 那样公开它的 y 位置 换句话说 我需要记住 ListView 滚动到的确切位置 并在返回活动时设置它 只是为了澄清 我不需要所选的项目 这非常简单 我需要恢复 ListView 上精确
  • 而不是触发器来更新具有多个表的视图

    我试图找到一个示例 说明如何使用替代触发器更新多个表上的视图 也就是说 我想要更新该视图从中选择的多个表 我找不到任何例子 如果有人能告诉我如何做到这一点那就太好了 假设您在这里使用的是 SQLServer过于简单化 example CRE
  • 在回发时保留单选/复选框值?

    ASP 对象有一些我无法理解的东西 我在更新面板中有一个按钮 在同一页面上 我有一个复选框 一个单选按钮和一个文本框 在更新面板之外 当我单击按钮时 我可以访问所有这三个对象 文本框能够保留其文本值 但是当我检查选中状态时 单选 复选框总是
  • Pytorch 问题:当 num_workers > 0 时,我的 jupyter 卡住了

    这是我在 PyTorch 中的代码片段 当我使用 num workers gt 0 时 我的 jupiter 笔记本卡住了 我在这个问题上花了很多时间却没有任何答案 我没有 GPU 仅使用 CPU class IndexedDataset
  • 猫鼬发现返回奇怪的对象

    我当前的问题是 db collection find mongoose 命令 我对 mongoose mongodb 比较陌生 但我已经掌握了它的概念 这是我一直试图运行的测试代码 mongoose connect url function
  • 如何在 Ironpython 中使用 –X:Frames?

    Visual Studio 2010 Ironpython for net4 我想在ironpython中使用numpy 他们说我必须使用框架支持 因此 我应该在命令行上使用 X Frames 或 X FullFrames 运行 ipy 但
  • 在错误消息中显示行号

    在我使用过的大多数 MATLAB 实例中 每当我的代码中出现错误时 命令窗口中的错误消息都会显示行号 但是在我当前使用的计算机上 它仅显示以下内容 Subscripted assignment dimension mismatch 有没有办
  • C 中 bool 数据类型的 scanf 格式说明符

    我在 C std99 中使用 bool 数据类型 其定义在
  • Node.js 异常处理最佳实践

    几天前我刚刚开始尝试 Node js 我意识到每当我的程序中出现未处理的异常时 节点就会终止 这与我接触过的普通服务器容器不同 在普通服务器容器中 当发生未处理的异常时 只有工作线程会终止 并且容器仍然能够接收请求 这提出了几个问题 Is
  • Swift 块值错误

    我不断收到快速完成块错误 错误是 无法调用非函数类型的值 Array Array gt 下面还有一个错误的图像 这是代码 var blockFinih selectedTags Array
  • 用于二进制输出的 ostream_iterator

    我希望能够使用ostream iterator流式传输到二进制文件 但是ostream iterator uses a 格式化输出功能所以它会写 ASCII 而不是二进制 std ostream iterator是一个单遍 OutputIt
  • Kubernetes 和 AAD 身份验证

    在配置的 AKS 上 有一个 docker 容器 其中包含使用 AAD 身份验证的应用程序 基于本文还有配置的入口 API 运行良好 当我添加带有 https 前缀的 Azure Active Directory 应用程序注册回复 URL
  • 如何从外部服务异步调用 google 上的操作?

    我正在尝试使用 actionssdk 将 Google Home 连接到外部聊天机器人 我有一个 API 它接受用户输入并使用 Webhook 将其发送到我的聊天机器人 但我的聊天机器人以异步方式调用 API 的另一个端点做出响应 并且我无
  • Python mysql 使用变量来选择某个字段

    python 和 mysql 有一个棘手的问题 为了简单起见 以下代码返回变量 field 中的所有内容 它是一个字符串 例如 用户名 或 密码 options field userID entries cursor execute sel
  • 实现 GCM 时如何从 Android 应用程序调用服务器应用程序 servlet 来注册设备

    我正在尝试从 Android 开发者网站了解 GCM 我已经按照以下说明实现了客户端 Android 应用程序http developer android com google gcm client html和 http 服务器应用程序 不