(由自己的新浪博客转移,原文作于:2016.4.17)
1.WebView访问网络
WebView是一个控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而在不打开系统浏览器的情况下展示各种各样的网页 。
代码示例:
在MainActivity对应的xml布局中加入一个<WebView />并给其一个id为:web_view。此部分代码略。
声明一个WebView: private WebView webView;
onCreate和加载布局略。
关键代码:
webView = (WebView) findViewById(R.id.web_view); //获取webView实例
webView.getSettings().setJavaScriptEnabled(true); //用getSettings()的方法设置webView属性,这里我们不设置,仅让其支持JavaScript 脚本
webView.setWebViewClient(new WebViewClient()); //当一个网页跳转到另外一个网页时,通过给setWebViewClient传入一个实例而保持 新的网页仍然在WebView中显示,而不去打开系统浏览器
webView.loadUrl("http://www.baidu.com"); //传入网址,显示内容
由于使用了网络功能,需要声明访问网络的权限。在AndroidManifest.xml文件中加入:
<uses-permission android:name = "android.permission.INTERNET" />
2.HTTP协议访问网络
在android中我们仅需认识其工作原理:客户端向服务器发出一条HTTP请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。
a.HttpURLConnection
创建HttpURLConnection
URLConnection rulConnection = url.openConnection();
// HttpURLConnection更多的API.如下:
HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection;
设置HttpURLConnection参数
httpUrlConnection.setRequestMethod("POST");
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setDoInput(true);
httpUrlConnection.setUseCaches(false);
httpUrlConnection.setRequestProperty("Content-type","application/x-java-serialized-object");
httpUrlConnection.connect();
获取实例
OutputStream outStrm = httpUrlConnection.getOutputStream();
HttpURLConnection发送请求
ObjectOutputStreamobjOutputStrm = new ObjectOutputStream(outStrm);
objOutputStrm.writeObject(new String("Test"));
objOutputStm.flush();
objOutputStm.close();
HttpURLConnection获取响应
InputStream inStrm = httpConn.getInputStream();
最后设置POST参数即可。
b.HttpClient
http的两种请求方式:POST和GET
GET方式核心代码:
String serverURL = "http://127.0.0.1/xxx/xx.jsp?username=abc;
HttpGet httpRequest = new HttpGet(serverURL); // 建立http get联机
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); // 发出http请求
if (httpResponse.getStatusLine().getStatusCode() == 200)
String result = EntityUtils.toString(httpResponse.getEntity()); // 获取相应的字符串
POST方式核心代码:
String uriAPI ="http://127.0.0.1/xxx/xx.jsp"; //声明网址字符串
HttpPost httpRequest = new HttpPost(uriAPI); //建立HTTP POST联机
List <NameValuePair> params = new ArrayList<NameValuePair>(); //Post运作传送变量必须用NameValuePair[]数组储存
params.add(new BasicNameValuePair("str","I am Post String"));
httpRequest.setEntity(newUrlEncodedFormEntity(params, HTTP.UTF_8)); //发出http请求
HttpResponse httpResponse = newDefaultHttpClient().execute(httpRequest); //取得http响应
if(httpResponse.getStatusLine().getStatusCode() ==200)
String strResult = EntityUtils.toString(httpResponse.getEntity()); //获取字符串