安卓向服务器提交数据,并获取数据


先建立一个class ,我命名为myapp,进行连接,传递参数获取数据

public class MyApp extends Application

{


/*全局变量,所有界面共用*/


protected static String requestURL = "http://192.168.10.108:8080/OnuMonitor/FileUploadServlet";
private static String serverAddress = "http://192.168.10.108:8080/OnuMonitor/DataCommunicate";



private static String cStatus;//收藏状态
   private static String oStatus;//开门权限状态


public static String getcStatus() {
return cStatus;
}


public static void setcStatus(String cStatus) {
MyApp.cStatus = cStatus;
}


public static String getoStatus() {
return oStatus;
}


public static void setoStatus(String oStatus) {
MyApp.oStatus = oStatus;
}


public static String getHostMAC() {
return hostMAC;
}


public static void setHostMAC(String hostMAC) {
MyApp.hostMAC = hostMAC;
}


private static String phoneNum;
private static String hostMAC;
private static boolean occupyed;

    /*返回occupyed*/
public static boolean isOccupyed()
{
return occupyed;
}
/*设置电话号*/
public static void setPhoneNum(String pnum)
{
if((pnum != null)&&(!pnum.equals("")))
{
phoneNum = pnum;
}
}

/*返回电话号*/
public static String getPhoneNum() {
return phoneNum;
}



/*发送post请求*/
public static String executePost(List<NameValuePair> params)
{
/*httpclient被占用*/
occupyed = true;

/*初始化服务器返回的数据字符串*/
String responseMsg = "";

/*新建httpclient*/
HttpClient httpclient = new DefaultHttpClient();

/*连接超时*/
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 1000*60);
/*读取超时*/
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 1000*60);

try
{
/*新建post请求*/
HttpPost post = new HttpPost(serverAddress);

/*设置请求参数及编码方式*/
post.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));

/*发送请求并读取服务器返回数据*/
HttpResponse response = httpclient.execute(post);

/*读取服务器返回的数据,并组成字符串*/
try
{
HttpEntity entity = response.getEntity();
if(entity != null)
{
InputStream is = entity.getContent();
try
{
InputStreamReader ir = new InputStreamReader(is);
try
{
BufferedReader br = new BufferedReader(ir);
try
{
/*读取服务器返回的数据并组成字符串*/
String str = null;
        while((str = br.readLine()) != null)
        {
        responseMsg = responseMsg.concat(str);
        }
}catch(Exception e)
        {
responseMsg = null;

        e.printStackTrace();
        }
/*关闭缓冲阅读器*/
finally
{
br.close();
}
}catch(Exception e)
{
responseMsg = null;

e.printStackTrace();
}
/*关闭输入流阅读器*/
finally
{
ir.close();
}
}catch(Exception e)
{
responseMsg = null;

e.printStackTrace();
}
/*关闭输入流*/
finally
{
is.close();
entity.consumeContent();
}
}
/*没有收到服务器返回的数据*/
else
{
responseMsg = null;
}
}catch(Exception e)
{
responseMsg = null;

e.printStackTrace();
}
}catch(Exception e)
{
responseMsg = null;

e.printStackTrace();
}

/*httpclient解除占用*/
occupyed = false;

/*返回字符串*/
return responseMsg;
}

}

调用时候的代码:

/* 向服务器请求基站信息 */
private void sendRequest() {
/* 显示进度指示器 */
String msg = "数据加载中...";
showProgressDialog(msg);


/* 新建线程向服务器请求基站数据 */
new Thread() {
public void run() {
try {


/* 设置请求参数 */
List<NameValuePair> params = new ArrayList<NameValuePair>();


params.add(new BasicNameValuePair("requestType", "93"));
params.add(new BasicNameValuePair("onuid", onuId));


/* 发送请求并读取服务器返回的数据 */
while (MyApp.isOccupyed()) {
;
}
String responseMsg = MyApp.executePost(params);


/* 数据处理 */
if (responseMsg == null) {
onuInfoMap = null;
} else {
/* 基站数据不为空 */
if (!(responseMsg.equals("{}"))) {
onuInfoMap = parseJSON2Map(responseMsg);
}
/* 基站数据为空 */
else {
onuInfoMap = null;
}
}
}
/* 请求数据失败 */
catch (Exception e) {
onuInfoMap = null;


/* 关闭进度指示器 */
dissmissProgressDialog();


/* 弹出信息提示框 */
Message message = new Message();
message.what = 0x006;
Bundle bundle = new Bundle();
bundle.putString("message", "网络不给力啊...");
message.setData(bundle);
toastHandler.sendMessage(message);


e.printStackTrace();
}


finally {
/* 初始化界面 */
Message message = new Message();
message.what = 0x006;
initHandler.sendMessage(message);


/* 关闭进度指示器 */
dissmissProgressDialog();
}
}
}.start();
}

/* 数据解析器 */
public Map<String, Object> parseJSON2Map(String jsonStr) {
Map<String, Object> guanBasicInfoMap = new HashMap<String, Object>();


JSONObject jsonObj = JSONObject.fromObject(jsonStr);
for (Object key : jsonObj.keySet()) {
Object value = jsonObj.get(key);
guanBasicInfoMap.put((String) key, value);
}
return guanBasicInfoMap;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android提供了多种数据存储形式,包括文件系统、SQLite数据库、Shared Preferences、网络存储和Content Provider。下面是对每种数据存储形式的简要介绍: 1. 文件系统:Android允许应用程序在内部存储和外部存储上创建和访问文件。内部存储是应用程序有的,只被应用程序本身访问。外存储可以被应用程序和用户访问。文件系统适用于存储较大的数据文件,如图片、音频视频等。 2. SQLite数据库:SQLite是一种轻量级的关系型数据库,Android提供了SQLite数据库的支持。开发者可以使用SQLite数据库来存储管理结构化数据。SQLite数据库适用于存储和查询大量结构化数据,如用户信息、日志和配置等。 3. Shared Preferences:Shared Preferences是一种轻量级的键值对存储方式,用于存储应用程序的配置信息和用户偏好设置。Shared Preferences适用于存储少量简单的数据,如用户设置、应用程序状态和计数器等。 4. 网络存储:Android应用程序可以通过网络连接来访问和存储数据。开发者可以使用HTTP协议与服务器进行通信,通过GET和POST请求来获取和提交数据。网络存储适用于需要与服务器进行数据交互的应用程序,如社交媒体应用和在线购物应用等。 5. Content Provider:Content Provider是Android提供的一种跨应用程序共享数据的机制。开发者可以使用Content Provider来存储和共享结构化数据,其他应用程序可以通过Content Resolver来访问和操作这些数据。Content Provider适用于需要共享数据给其他应用程序使用的应用程序,如联系人、日历和媒体库等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值