【问题标题】:how to send data from android to server如何将数据从android发送到服务器
【发布时间】:2010-07-01 10:35:11
【问题描述】:

我正在探索从 android 扫描 ssid 和 rssi,我能够做到,但现在我想将数据发送到服务器,所以我探索了我在下面找到的代码

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://101.34.45.45/rawData");

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs.add(new BasicNameValuePair("userId", "00-22-68-E8-EC-F1"));
        nameValuePairs.add(new BasicNameValuePair("timestamp", "2010-07-01 11:11:11"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        textView.setText(response.toString());

    } catch (ClientProtocolException e) {
    } catch (IOException e) {
    }

但现在我在添加多个 wifi 数据时遇到问题,格式应如下所示

http://101.34.45.45/rawData?data={"userId":"guest1","timestamp":"2010-07-01 08:58:23","wifi":[{"ssid":"guest","rssi": "40"},{"ssid":"guest1","rssi":"80"}]},

那么wifi参数怎么做,谁能帮忙,我还在尝试几个品种,

谢谢

【问题讨论】:

    标签: android http httpclient http-post


    【解决方案1】:

    我建议您切换到 JSON 以将数据发送到服务器。 Google gson 最容易用于发送和解析 JSON。

    {"userId":"guest1","timestamp":"2010-07-01 08:58:23","wifi":[{"ssid":"guest","rssi":"40"},{"ssid":"guest1","rssi":"80"}]}
    

    您应该使用具有 JSON 数组作为其项目之一的 JSON 对象。 JSON 数组又包含另一个 json 对象。

    如果您使用的是 Google GSON,您应该为它构建一个类层次结构。以下是你应该如何做同样的事情。

    Class data{
    
     String userId;
     String timestamp;
     Wifi wifi;
    }
    
    Class Wifi{
    
     String ssid;
     int rssi;
    }
    

    您可以查看here 以获取有关在 android 中解析 json 的类似问题的示例代码。

    This 也可能有用。

    【讨论】:

    • 在android SDK自带json库的情况下,为什么要引入额外的第三方依赖?
    • 我发现 GSON 比固有的 json 库更容易用于将 POJO 转换为 json,反之亦然。
    • 为什么我们不能使用 POST 而不是 JSON.. 因为大多数时候我会将图像发送到服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2017-07-12
    • 1970-01-01
    • 2012-07-19
    • 2015-08-21
    • 2016-06-12
    • 2012-02-14
    相关资源
    最近更新 更多