做一个简易的远程数据监控时遇到的第一个问题是如何搞定固定IP,云主机当然是最理想的选择,但出于成本考虑今天研究了一下通过web网站获取或上传数据的方法。
没太多可说的,直接晒代码
public static String httpPost(String url,int ID) { String msg ; String sval; try{ httpURLConnection conn = (httpURLConnection) new URL(url).openConnection(); //设置请求方式,请求超时信息 conn.setRequestMethod("POST"); conn.setReadTimeout(5000); conn.setConnectTimeout(5000); //设置运行输入,输出: conn.setDoOutput(true); conn.setDoinput(true); //Post方式不能缓存,需手动设置为false conn.setUseCaches(false); //数据: sval=String.valueOf(ID); String data = "ID="+ URLEncoder.encode(sval, "UTF-8")+"&name="+ URLEncoder.encode("chipart"+sval, "UTF-8"); //这个在asp里对应request("ID")和request("name")这两个值 //获取输出流 OutputStream out = conn.getoutputStream(); out.write(data.getBytes()); out.flush(); int rcode=conn.getResponseCode();//成功时返回200 if (rcode == 200) { // 获取响应的输入流对象 inputStream is = conn.getinputStream(); // 创建字节输出流对象 ByteArrayOutputStream message = new ByteArrayOutputStream(); // 定义读取的长度 int len = 0; // 定义缓冲区 byte buffer[] = new byte[1024]; // 按照缓冲区的大小,循环读取 while ((len = is.read(buffer)) != -1) { // 根据读取的长度写入到os对象中 message.write(buffer, 0, len); } // 释放资源 is.close(); message.close(); // 返回字符串 msg = new String(message.toByteArray()); return msg; } else msg="ERROR code:" + String.valueOf(rcode); }catch(Exception e) { e.printstacktrace(); msg="ERR:" + e.getMessage(); } return msg; }
手机端用的是httpURLConnection这也是Google推荐 使用的类。网站是使用asp做的动态页面。
主要功能函数httpPost是使用http的post方法将数值传递给asp,然后读取asp页面返回的数据。asp页面读到数值后保存到数据库中,asp代码如下:
<%Dim tconnset tconn=server.CreateObject("ADODB.Connection")set rs=server.CreateObject("ADODB.Recordset")tconn.ConnectionString="ProvIDer=Microsoft.Jet.olEDB.4.0;Data Source=""" & server.Mappath("db\iot.mdb") & """"tconn.OpenDim irs.Open "SELECT * FROM tbl1 WHERE ID IS NulL",tconn,0,3,1rs.AddNewrs("pID")=request("ID")rs("name")=request("name")rs.Updaters.Closetconn.Closeset rs=nothingset tconn=nothing%><HTML> <head> </head> <body> 数据上传成功! </body></HTML>
测试结果:
不太明白虚拟机显示中文字符为什么会出现乱码,不太关心的问题只能暂时忽略了。
下面是asp数据库查询页面显示图,就是为了看看数据库中插入数据有没有成功。
包括asp测试页面在内的项目代码下载请点击这里.
总结
以上是内存溢出为你收集整理的Android学习笔记5:Android与ASP通过http协议交换数据全部内容,希望文章能够帮你解决Android学习笔记5:Android与ASP通过http协议交换数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)