Http
1.HttpClient综述
HttpClient有两个实现子类,一个是AndroidHttpClient,一个是Default
HttpClient;AndroidHttpClient继承自DefaultHttpClient,是针对Android
设备的对某些参数进行了默认设置。
DefaultHttpClient client = new DefaultHttpClient();
可以对client设置参数(HttpParams),如连接超时
HttpParams params = new BasicHttpParams(); params.setIntParameter(AllClientPNames.CONNECTION_TIMEOUT,10*1000); client.setParams(params);
1)对于get请求
HttpGet request = new HttpGet("http://www.renren.com?email=" +"zhangsan"+"&password="+"123"); HttpResponse response = client.execute(request); int statusCode = respose.getStatusLine().getStatusCode(); if(statusCode==HttpStatus.SC_OK){ String str = EntityUtils.toString(response.getEntity()); System.out.println(str); }
2)对于post请求
HttpPost request = new HttpPost("http://www.renren.com"); List<NameValuePair> pairs = new ArrayList<NameValuePair>(); pairs.add(new BasicNameValuePair("email","zhangsan@126.com")); pairs.add(new BasicNameValuePair("password","123")); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairs); //或者指定编码,如下 //UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairs,"UTF-8"); request.setEntity(formEntity); HttpResponse response = client.execute(request); int statusCode = respose.getStatusLine().getStatusCode(); if(statusCode==HttpStatus.SC_OK){ String str = EntityUtils.toString(response.getEntity()); System.out.println(str); }
EntityUtils是一个工具类,所以它的方法为静态方法,它用来解析实体。提供的方法有
EntityUtils.toString(HttpEntity entity)-->String 作用将response的entity
按照默认编码转为字符串
EntityUtils.toString(HttpEntity entity, String defaultCharset) -->String
按照指定编码转为字符串
EntityUtils.toByteArray(HttpEntity entity)-->byte[] 作用是将response
的entity转为byte数组,如:可以处理图片
如下边例子:
HttpEntity entity = response.getEntity(); byte[] bs = EntityUtils.toByteArray(entity); Bitmap bitmap = BitmapFactory.decodeByteArray(bs, 0, bs.length);
得到Bitmap就可以设置到ImageView中了。
注意:需要联网权限
<uses-permission android:name="android.permission.INTERNET"/>
2.注意
127.0.0.1 和 localhost都表示android手机自己本身的地址。
3.HttpUrlConnection综述
HttpUrlConnection可以处理get请求也可以处理post请求。
get方式介绍:
使用方式:
step1.
URL url = new URL("http://119.97.113.180:8080/test/t?username=zhangsan&password=123");
step2.通过URL创建HttpUrlConnection对象
HttpUrlConnectioin connection = url.openCennection();
step3.得到输入流。读取服务器返回的数据。
step4.关闭流
step5.connection.disconnect();断开连接。
String httpUrl = "http://119.97.113.180:8080/test/t?username=zhangsan&password=123" URL url = new URL(httpUrl); if (url != null){ HttpURLConnection urlConn = (HttpURLConnection) url .openConnection(); InputStreamReader in = new InputStreamReader(urlConn .getInputStream()); BufferedReader buffer = new BufferedReader(in); String inputLine = null; while ((inputLine = buffer.readLine()) != null) { resultData += inputLine + "\n"; } in.close(); urlConn.disconnect();
post方式:
step1.创建URL对象
URL url = new URL("http://192.168.1.108:8080/test/t");
HttpURLConnection urlConn = (HttpURLConnection) url .openConnection(); step3.对connection对象进行设置 urlConn.setDoInput(true); urlConn.setDoOutput(true); urlConn.setRequestMethod("POST");//注意:这里必须为大写 urlConn.setUseCaches(false);
step5.得到输出流,输出传给服务器的参数,然后关闭流。
step6.得到输入流,读取服务器响应的数据,然后关闭流。
step7.connection.disconnect();
String httpUrl = "http://192.168.1.108:8080/test/t"; String resultData = ""; URL url = new URL(httpUrl); if (url != null) { HttpURLConnection urlConn = (HttpURLConnection) url .openConnection(); urlConn.setDoInput(true); urlConn.setDoOutput(true); urlConn.setRequestMethod("POST"); urlConn.setUseCaches(false); urlConn.connect(); DataOutputStream out = new DataOutputStream( urlConn.getOutputStream()); // 用户名和密码 String content = "username=" + URLEncoder.encode("******") + "&password=" + "*******"; out.writeBytes(content); out.flush(); out.close(); BufferedReader reader = new BufferedReader( new InputStreamReader(urlConn.getInputStream())); String inputLine = null; while ((inputLine = reader.readLine()) != null) { resultData += inputLine + "\n"; } reader.close(); urlConn.disconnect(); }
4.WebView控件的使用
WebView用来加载网页
step0.manifest.xml增加联网权限
<uses-permission android:name="android.permission.INTERNET"/>
step1.在layout中定义
<WebView
android:id="@+id/wv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
step2.在Activity中
wv = (WebView) findViewById(R.id.wv);
wv.loadUrl("http://www.baiud.com");
step3.保证每次都使用WebView打开连接。
wv.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;//一定要为true
}
});