<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lyf_web2"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />

<!-- 联网权限 -->
<uses-permission
android:name="android.permission.INTERNET"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.lyf_web2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
--------------------------------------------------------------------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
android:id="@+id/ButtonConn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ButtonConn"/>
<!-- @string 没有s -->

</RelativeLayout>
-----------------------------------------------------------------------------------------
package com.example.lyf_web2;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

//extends继承Activity
//implement OnClickListener类 (里面有onClick(View v))
public class MainActivity extends Activity implements OnClickListener {
//声明
Button ButtonConn=null; //声明按钮
//声明常量 网络路径
final String BASE_URL="http://teacher.dm5u.com/AndroidServers/AndroidData.asmx/QusestionPage";
Handler handler; //声明Handler

@Override //activity创建时调用(Bundle 保存实例状态 )
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到控件
ButtonConn=(Button)findViewById(R.id.ButtonConn);
ButtonConn.setOnClickListener(this); //设置监听当前 类对象

this.handler=new Handler(){ //创建一个Handler
@Override //复写 处理信息方法handleMessage(Message 消息)
public void handleMessage(Message msg) {
switch(msg.what){ //用户定义消息代码,以便收件人可以确定这消息是关于什么。每个处理器都有自己的name-space消息代码,所以您不需要担心你的冲突与其他处理程序。
case 1: //如果是1,将携带的消息(msg.obj)弹出来
Toast.makeText(getApplicationContext(), msg.obj.toString(), Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(getApplicationContext(), "LYF_ERROR", 1).show();
break;
}
}
};

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

//自定义的post访问网络方法
//传入Handler是应为我们打算在不同的线程中去访问网络,而在新线程中只有Handler能处理主线程UI(原先的线程)
public void doPost(final Handler handler){
new Thread(){ //创建新线程
@Override //复写 运行方法
public void run() {
//查询字符串
String urlSelectString="startNum=1&endNum=6";
try {
//以网络路径创建URL对象
URL url=new URL(BASE_URL);
//url打开连接 得到HttpURLConnection对象
HttpURLConnection httpUrlConnection= (HttpURLConnection)url.openConnection();
httpUrlConnection.setConnectTimeout(5*1000); //HttpURLConnection设置超时 5s
httpUrlConnection.setRequestMethod("POST"); //HttpURLConnection设置请求方式
httpUrlConnection.setDoInput(true); //HttpURLConnection设置 做输入
OutputStream outputStream = httpUrlConnection.getOutputStream(); //HttpURLConnection得到输出流
outputStream.write(urlSelectString.getBytes()); //将查询字符串 写入到输出流中

int code= httpUrlConnection.getResponseCode(); //HttpURLConnection得到响应码
if(code==200){ //如果请求成功
//HttpURlConnection中得到一个输入流(此输入流以连接对象建立,此流代表 连接对象连接的资源)
InputStream inPutStream=httpUrlConnection.getInputStream();
byte[] bsBuffer=new byte[1024]; //创建一个字节数组缓冲区
int len=0;
//创建字节数组输出流(用于 将数组缓冲区 的数据写入到 输出流中)
ByteArrayOutputStream byteArrayOutPutStream=new ByteArrayOutputStream();
while((len=inPutStream.read(bsBuffer))!=-1){ // 》》 将输入流中 的数据读取到bs缓冲区中
// 这个方法是从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中
// 它是有返回值的,它返回读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1
// 就是当它返回-1的时候 数据已经复制完了 while循环终止程序结束
byteArrayOutPutStream.write(bsBuffer,0,len); //《《 以bs的长度从偏移量到结束点 将bs中的数据写到OutPutStream中
}
//总结Java中的流 :输入 (r大于》W)输出
String json=new String(byteArrayOutPutStream.toByteArray()); //将输出流中的数据转换为字节数组,在转成String
handler.sendMessage(handler.obtainMessage(1,json)); //将信息发送到 Handler
}

} catch (Exception e) {
Log.v("lyf", e.toString()); //

}
}
}.start(); //开始线程
}

@Override //点击时调用 onClick(View 视图对象)
public void onClick(View v) { //
switch(v.getId()){ //得到视图的id ??
case R.id.ButtonConn: //点击时在视图中的id是 ButtongConn的Id
doPost(handler); //执行 自定义的方法 并传入当前类(前面定义的)的handler
break;
default:
break;
}
}

}

android 联网的更多相关文章

  1. Android 联网监控抓包工具的制作(tcpdump的使用)

    最近做一个Android联网抓包的工具 自己在网上搜索了好久 发现还是没有头绪 于是考虑在linux层上下功夫 于是采用linux的tcpdump来实现了抓包的功能 用简单的话来定义tcpdump,就 ...

  2. Android联网更新应用

    UpdateInfo public class UpdateInfo { public String version;//服务器的最新版本值 public String apkUrl;//最新版本的路 ...

  3. 转-Android联网 — HttpURLConnection和HttpClient选择哪个好?

    http://www.ituring.com.cn/article/199619?utm_source=tuicool 在Android开发中,访问网络我们是选择HttpURLConnection还是 ...

  4. 论述Android通过HttpURLConnection与HttpClient联网代理网关设置

    Android联网主要使用HttpURLConneciton和HttpClient进行联网,在手机联网的时候,我们优先选择wifi网络,其次在选择移动网络,这里所述移动网络主要指cmwap. 大家都知 ...

  5. android之HttpClient

    Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类. 下面分别讲一下怎么用HttpClient实现get,post请求. 1.Get 请求 HttpGet ...

  6. android HTTPclient

    Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类. 下面分别讲一下怎么用HttpClient实现get,post请求. 1.Get 请求 1 2 3 4 ...

  7. 网络--三种网络通讯方式及Android的网络通讯机制

    Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).下面分别介绍这些接口的功 ...

  8. android测试本地服务调试流程

    我今天调试的整个过程 1,安卓发现连不上本地的tomcat 2,使用浏览器直接尝试,发现可以连上 3,怀疑是安卓APP和浏览器访问有差异,后上网搜索不到APP,只有浏览器尝试       再不就是改I ...

  9. Android的三种网络通信方式

    Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).下面分别介绍这些接口的功 ...

随机推荐

  1. PowerTool(杀毒辅助工具) V4.6 中文免费绿色版

    软件名称: PowerTool(杀毒辅助工具)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 968KB图片预览: 软件简 ...

  2. PHP22期基础班总结

    11月7号,我们结束了为期17天的PHP基础班课程,最后一天的晚自习之后,马总问了我们的一个问题,基础班1000块钱的课程,我们认为是否值得这个价格?这其实是一个很好的问题. 2016年1000块钱能 ...

  3. matlab里textread出现错误“Trouble reading floating point number from file (row 1, field 1)”

    matlab里textread出现错误“Trouble reading floating point number from file (row 1, field 1)” 解决办法:traindata ...

  4. drupal7 boost模块为登录用户提供缓存

    这段时间研究Drupal7的缓存相关,看了好多资料,都提到了boost和authcache两个模块,今天来说一下boost. 具体的下载安装,配置等,官网写的听清楚,boost模块地址 ,安装配置方法 ...

  5. 为什么要lock,lock了什么?

    当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源 ...

  6. javascript 判断是否使用的是ipad

    //判断是否使用的是ipad function isIpad(){ var ua = navigator.userAgent.toLowerCase(); if(/ipad/i.test(ua)) { ...

  7. 设计模式 -- 解释器模式(Interpreter Pattern)

    2015年12月15日00:19:02 今天只看了理论和demo,明天再写文章,跑步好累 2015年12月15日21:36:00 解释器模式用来解释预先定义的文法. <大话设计模式>里面这 ...

  8. iOS开发关于xcode中souceControl的苹果文档翻译(节选)

    Subversion 1.7 provides many benefits: svn1.7版本有以下好处: Improved performance. Increased speed for many ...

  9. referencedColumnName

    In JPA there is a an attribute called referencedColumnName that can be set on @JoinColumn, @PrimaryK ...

  10. html中的a标签的target属性的四个值的区别?

    target属性规定了在何处打开超链接的文档. 如果在一个 <a> 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的.名称与这个目标吻合的框架或者 ...