【问题标题】:Android: Send JSON String created by Gson library with HttpURLConnection API to the localhostAndroid:使用 HttpURLConnection API 将 Gson 库创建的 JSON 字符串发送到本地主机
【发布时间】:2015-04-22 11:40:16
【问题描述】:

我有由 Gson 库创建的 JSON 字符串,我想使用 HttpURLConnection API“GET”将此字符串发送到 localhost 服务器(wamp)。我将在通过 USB 电缆与笔记本电脑连接的 S4 设备上运行该应用程序。

感谢您的帮助。

我有这个 JSON 字符串:

{
   "latitude":80.86907321,
   "longitude":15.66542435,
   "formatted":"22.04.2015 11:11:00",
   "route":4
}

我在内部类“MyLocationListener”中有这个方法:

private String convertToJSON(double pLong, double pLat, String formatted) {
    //envelop the data in JSON format.                  
    Data d = new Data(pLat, pLong, formatted,route_number);
    Gson gson = new GsonBuilder().registerTypeAdapter(Data.class, new DataSerializer()).create();
    return gson.toJson(d);
}

【问题讨论】:

  • 你的问题到底是什么?
  • @Sidd:如何使用 HttpURLConnection api 将此 JSON 字符串发送到我的本地主机?我将在我的设备上测试该应用程序。

标签: android httpurlconnection


【解决方案1】:

首先,您必须了解 AsyncTask。

AsyncTask 允许正确且轻松地使用 UI 线程。此类允许在 UI 线程上执行后台操作并发布结果,而无需操作线程和/或处理程序。

AsyncTask 被设计为围绕 Thread 和 Handler 的辅助类,并不构成通用的线程框架。 AsyncTasks 最适合用于短时间的操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent 包提供的各种 API,例如Executor、ThreadPoolExecutor 和 FutureTask。

异步任务由在后台线程上运行的计算定义,其结果在 UI 线程上发布。异步任务由 3 种通用类型定义,称为 Params、Progress 和 Result,以及 4 个步骤,称为 onPreExecute、doInBackground、onProgressUpdate 和 onPostExecute。

这里是AndroidDeveloper AsyncTask page的链接

其次,您应该创建一个专用于数据库操作的类。个人而言,我更喜欢 Apache 的 HttpClient,但如果您更喜欢 HttpURLConnection,请查看this page。 HttpClient 和 HttpURLConnection 都已定义(以及一些示例)

而且,如果您想发送 JSON 数据,为什么不使用 POST?

最后一件事:如果你在设备上使用 wamp 和你的本地主机,你的 url 应该是:http://192.168.X.X,但在模拟器上http://127.0.0.1

希望这会有所帮助。

【讨论】:

  • 感谢您的回答。我将使用 POST。我想在 60 秒后将数据发送到服务器,所以这意味着我不能使用 AsyncTask 类?
  • 不,你可以,你只需要设置一个定时器在60秒后执行任务。但不是锁定主 UI 线程
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多