andorid网络请求两种方式

ConnectivityManager mManager = (ConnectivityManager) MainActivity. this .getSystemService( Context. CONNECTIVITY_SERVICE );
NetworkInfo mNetworkInfo = mManager.getActiveNetworkInfo();
boolean flag=mNetworkInfo != null && mNetworkInfo.isConnected();
Log. e ( "1111" ,flag+ "" );
聚合数据
URL请求两种:
GET与POST请求
?id="1'
String url="Https://www.baidu.com"
String path="/login";
Looper MessageQun (Message) Handler
Loacl Thread
区别:
     get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, 
     post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。

< uses-permission android :name= "android.permission.INTERNET" />
mainfest.xml
andorid网络请求两种方式: httpUrlConnection和httpClient
httpUrlConnection :http 地址链接
如何使用:1,先得到一个url对像 URL=new URL(address)
2,根据得到的url对像得到一个urlconnection对像
3,设置请求参数 :类型 (post/get)
设置是否向httpUrlConnection输出,如果这个是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;
httpUrlConnection.setDoOutput(true);
设置是否从httpUrlConnection读入,默认情况下是true;
httpUrlConnection.setDoInput(true);
Post 请求不能使用缓存
httpUrlConnection.setUseCaches(false);
设定传送的内容类型是可序列化的java对象
(如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)
httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");
设定请求的方法为"POST",默认是GET
httpUrlConnection.setRequestMethod("POST");
连接,设置参数和connect之前完成,
httpUrlConnection.connect();
HttpURLConnection的connect()函数,实际上只是建立了一个与服务器的tcp连接,并没有实际发送http请求。 在用POST方式发送URL请求时,URL请求参数的设定顺序是重中之重, 
    对connection对象的一切配置(那一堆set函数) 
    都必须要在connect()函数执行之前完成。而对outputStream的写操作,又必须要在inputStream的读操作之前。 
    这些顺序实际上是由http请求的格式决定的。
10-14 03:12:11.464 12260-12274/com.example.wuli.testhttp I/网络请求回来的数据=====: {"desc":"OK","status":1000,"data":{"wendu":"22","ganmao":"天气转凉,空气湿度较大,较易发生感冒,体质较弱的朋友请注意适当防护。","forecast":[{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 23℃","type":"霾","low":"低温 13℃","date":"14日星期五"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 17℃","type":"小雨","low":"低温 12℃","date":"15日星期六"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 20℃","type":"阴","low":"低温 11℃","date":"16日星期天"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 21℃","type":"晴","low":"低温 9℃","date":"17日星期一"},{"fengxiang":"无持续风向","fengli":"微风级","high":"高温 21℃","type":"晴","low":"低温 11℃","date":"18日星期二"}],"yesterday":{"fl":"微风","fx":"无持续风向","high":"高温 22℃","type":"霾","low":"低温 12℃","date":"13日星期四"},"aqi":"325","city":"北京"}}
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.



网络请求的步骤:
1,通过地址得到URL对像
2,通过URL对像得到HttpUrlConnection
3,通过得到的HttpUrlConnection对像设置网络请求方式(GET/POST)
4,网络请求 是否成功 如果成功读数据
1),通过HttpUrlConnection对像得到网络数据流 
2),将数据流拼接成字符串


子线程和主线程之间的通信:

网络请求放在子线程
显示数据放在主线程里
1,new 子线程 然后把耗时的操做放在run方法里面
new Thread(){
public void run (){
super.run();

}}

2,开启线程 Thread 对像.start();


3,将子线程里得到的数据传送到主线程
1),通过Handler 在子线程里面将数据封装到Message对像里面
Message message=new Message()
message.what=1//int 类型 标识
message.obj=//可以是任何类型 真正要传的数据

4,直接向主线程发送数据
handler.sendMessage(message)

5,在主线程读取数据
1),主线程里面重写handleMessage(Message msg)
在方法内通过传过来的参数 msg取出里面想要的内容
            msg.what//标识
            msg.obj//真正想要的内容









 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值