手机与pc机连接读取服务器数据

从电脑里面到的是一个xml文件  

必须先要进行解析,解析用了两种,一种是xml解析,一种是json解析。xml大家都知道,json是什么呢,其实它是类似于数组方式存储的字符串,也就是一段文本。

下面是案例:

一般错误都是URL地址写错了导致连接出现问题。所以这里要注意。

其次一定要记得配权限。

 

 package com.icss.test_pc_connection_mobile;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xml.sax.SAXException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;


import android.util.Log;
import android.util.Xml;

 

public class XmlParserUtil {
 /**
  * SAX解析
  */
 public static List<Person> getListFromWebBySax(InputStream inputStream)
   throws ParserConfigurationException, SAXException, IOException {
  List<Person> list = null;
  // 业务
  // 1. 创建SAX解析器工厂
  SAXParserFactory spf = SAXParserFactory.newInstance();
  // 2. 通过工厂拿到解析 器
  SAXParser sp = spf.newSAXParser();
  // 3. 解析 器加流及handler对象来解析
  PersonHandler sxh = new PersonHandler();
  sp.parse(inputStream, sxh);
  // 5. handler中取出list
  list = sxh.getList();
  // 4. 关闭流
  inputStream.close();
  return list;
 }
 
 /**
  * json解析
  *
  * @throws JSONException
  */
 public static List<Person> getListFromWebByJson(InputStream inputStream)
   throws ParserConfigurationException, SAXException, IOException,
   XmlPullParserException, JSONException {
  List<Person> list = null;
  Person s = null;
  // 从流中读取数据
  byte[] b = new byte[1024];
  //du dao liu
  inputStream.read(b);
  //ba liu change String
  String str = new String(b, "utf-8");
  JSONArray ja = new JSONArray(str);
  for (int i = 0; i < ja.length(); i++) {
   JSONObject jo = (JSONObject) ja.get(i);
   s.setId(jo.getInt("id"));
   s.setName(jo.getString("name"));
   s.setAge(jo.getInt("age"));
   list.add(s);
  }
  inputStream.close();
  return list;
 }
 

 /**
  * pull解析
  */
 public static List<Person> getListFromWebByPull(InputStream inputStream)
   throws ParserConfigurationException, SAXException, IOException,
   XmlPullParserException {
  List<Person> list = null;
  Person s = null;
  // 一种,直接pull
  // XmlPullParserFactory f=XmlPullParserFactory.newInstance();
  // XmlPullParser p=f.newPullParser(); //pull解析器
  // 二种, android对pull的支持
  XmlPullParser p = Xml.newPullParser(); // 通过android的pull支持创建一个pull解析器
  p.setInput(inputStream, "utf-8");
  int eventType = p.getEventType();

  while (eventType != XmlPullParser.END_DOCUMENT) {
   Log.i("localName", "" + p.getName());
   // 每一个节点业务
   switch (eventType) {
   case XmlPullParser.START_DOCUMENT:

    list = new ArrayList<Person>();

    break;
   case XmlPullParser.START_TAG:
    if ("person".equals(p.getName())) {
     s = new Person();
     s.setId(new Integer(p.getAttributeValue(null, "id")));
    } else if ("name".equals(p.getName())) {
     if (s != null) {
      s.setName(p.nextText());
     }
    } else if ("age".equals(p.getName())) {
     if (s != null) {
      s.setAge(new Integer(p.nextText()));
     }
    }
    break;
   case XmlPullParser.END_TAG:
    if ("person".equals(p.getName()) && s != null) {
     list.add(s);
    }
    break;
   }
   eventType = p.next(); // 到下一个节点
  }

  return list;
 }
}

 

 

上面是两种解析方式。其他代码在附件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现Android手机与PC之间的蓝牙数据传输,可以按照以下步骤进行操作: 1. 在Android手机上,首先需要开启蓝牙功能。这可以通过在应用程序中请求蓝牙权限并使用蓝牙适配器(BluetoothAdapter)来实现。 2. 在PC端,确保蓝牙适配器已连接并且可用。如果PC上没有内置蓝牙适配器,您可以使用USB蓝牙适配器。 3. 在Android手机上,编写一个蓝牙客户端应用程序。你可以使用Android的BluetoothSocket类来实现与PC之间的通信。使用该类,您可以连接到PC设备的蓝牙服务器,并通过输入输出流来发送和接收数据。 4. 在PC上,您需要编写一个蓝牙服务器应用程序。使用带有SPP(串行端口配置文件)的蓝牙适配器,您可以将PC设备设置为接受来自Android客户端的蓝牙连接。在PC服务器应用程序中,使用输入和输出流来处理与Android手机之间的数据交换。 5. 建立蓝牙连接后,Android客户端可以通过输出流将任何要发送给PC的数据写入,并通过输入流从PC接收数据。 6. 在整个过程中,确保在Android和PC之间的蓝牙通信中使用相同的UUID(通用唯一标识符),以便两者能够匹配并建立连接。 请注意,以上步骤仅提供了一个基本的框架,具体的实现可能因您的需求而有所不同。您可能需要根据实际情况进行适当的修改和调整。同时,请确保在开发过程中执行错误处理和异常处理,以提高应用程序的稳定性和可靠性。 ### 回答2: 要实现Android蓝牙客户端和PC之间的数据传输,可以采用以下步骤: 1. 在Android设备上,首先确保蓝牙功能已经打开。可以通过编程方式检查蓝牙是否可用,并请求用户打开蓝牙。 2. 使用Android的蓝牙API建立蓝牙连接。可以使用BluetoothAdapter类来获取本地蓝牙适配器,然后使用该适配器启动设备发现。 3. 在PC上,也需要确保蓝牙适配器已经连接到PC上,并且蓝牙功能已经启用。 4. 在PC上,使用蓝牙软件来搜索附近的蓝牙设备。找到Android设备后,可以进行配对和连接。 5. 在Android设备上,使用BluetoothSocket类来建立与PC之间的数据通道。可以使用createRfcommSocketToServiceRecord方法来创建一个RFCOMM(串口)通信的socket,并将其连接到PC的蓝牙设备。 6. 在PC上,接受来自Android设备的连接请求,并建立连接后,可以使用已匹配的蓝牙设备和RFCOMM服务在PC上创建一个监听器。 7. 一旦连接建立,就可以在Android设备和PC之间传输数据。可以使用输入流和输出流来读取和写入数据。 8. 在结束数据传输后,记得关闭连接并释放资源,以便其他设备可以重新连接。 总结来说,要实现Android蓝牙客户端和PC之间的数据传输,需要打开蓝牙功能、建立蓝牙连接、创建数据通道并传输数据。请注意,具体的实现方式可能会因为不同的蓝牙设备和操作系统版本而有所差异。因此,建议查阅相关的Android蓝牙编程文档和PC蓝牙操作指南以获得更详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值