zoukankan      html  css  js  c++  java
  • Android访问网络

      Android中访问网络用的是HttpClient的方式,即Apache提供的一个jar包。安卓中继承了改jar包,所以安卓adt中不需要专门import该jar,直接就可以使用。

    以下是MainActivity.java代码:

    package com.wyl.httptest2;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class MainActivity extends ActionBarActivity {
    	Button btn;
    	EditText et;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		btn = (Button)findViewById(R.id.btnId);
    		MyOnclickListener l = new MyOnclickListener();
    		et = (EditText)findViewById(R.id.editTextId);
    		btn.setOnClickListener(l);//绑定监听器
    	}
    
    	class MyOnclickListener implements OnClickListener{
    		@Override
    		public void onClick(View v) {
    			//原则:UI中的主线程不能够直接访问网络
    			System.out.println("====线程名:"+Thread.currentThread().getName());
    			getInternetThread myThread = new getInternetThread();
    			myThread.start();
    			
    		}
    		
    	}
    	
    	class getInternetThread extends Thread{
    		String line = "我是空";
    		@Override
    		public void run() {
    			
    			System.out.println("线程名:"+Thread.currentThread().getName());
    			//获取EditText 控件里的 uri
    			String uri = et.getText().toString();
    			System.out.println("uri的值:"+uri);
    			//访问网络
    			//获取客户端对象
    			HttpClient client = new DefaultHttpClient();
    			//获取请求对象,并传入uri
    			HttpGet get = new HttpGet(uri);
    			//客户端发送请求对象
    			try {
    				HttpResponse resp = client.execute(get);
    				//获取状态码,如果是200说明成功
    				int code = resp.getStatusLine().getStatusCode();
    				if(code == 200){
    					//获得返回值
    					InputStream in = resp.getEntity().getContent();
    					BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    					line = reader.readLine();
    				}
    			} catch (ClientProtocolException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			et.setText(line);//设置EditText的值,这个地方会导致程序的崩溃,猜测是workThread不能够直接修改主线程即安卓UI中的数据。
    			
    		}
    		
    	}
    }
    

      安卓的页面如下:

  • 相关阅读:
    SignalR了解
    轮询、长轮询、长连接、socket连接、WebSocket
    WebSocket
    FileSaver.js 实现浏览器文件导出
    上传文件调用webapi方式
    JS离开页面 弹窗
    微信公众号开发 VS2015本地调试
    C# 微信 企业号通知消息
    nginx防止DDOS攻击配置
    如何在终端使用后台运行模式启动一个Linux应用程序
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4678550.html
Copyright © 2011-2022 走看看