Android学习-Http请求
来源:互联网 发布:怎样修改淘宝掌柜名字 编辑:程序博客网 时间:2024/05/23 18:31
今天继续学习网络编程模块。首先是WebView,简单的来访问网页
在这之前先要什么访问网络的权限
<uses-permission android:name="android.permission.INTERNET"/>
WebView
实现在layout中新建webview组件,然后在activity中新建webview对象,然后调用setWebViewClient()方法,该方法中传入一个WebViewClient对象
webView=(WebView) findViewById(R.id.webview); webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } }); webView.loadUrl("http://www.baidu.com");
HttpURLConnection
用来获取百度的HTML代码,首先新建子线程,在子线程中来访问服务器数据并获取HTML代码,然后利用Handler来进行UI操作
private static final int GET_HTTPREQUEST=0;private Handler handler=new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case GET_HTTPREQUEST: String info=(String) msg.obj; textView.setText(info); break; default: break; } } };
获取代码的时候首先新建一个URL表示要访问的网址,然后利用URL里的openConnection()方法来新建HttpURLConnection对象,接着获取inputStream输入流,用来获取服务器返回的代码数据,然后调用HttpURLConnection的setRequestMethod()方法来设置Http请求的方法,因为我们这里是获取数据,所以传入”GET”(发送就用POST),然后再将inputStream的数据转换成String字符串显示出来
private void requestUrl() { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub URL url=null; try { url = new URL("http://www.baidu.com"); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); InputStream in=connection.getInputStream(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000);//设置超时选项 StringBuilder sb=new StringBuilder(); String line; BufferedReader reader=new BufferedReader(new InputStreamReader(in)); while((line=reader.readLine())!=null) { sb.append(line); } Message message=new Message(); message.what=GET_HTTPREQUEST; message.obj=sb.toString(); handler.sendMessage(message); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); }
发起网络请求,必须开启子线程
HttpClient
GET
HttpClient是一个接口,所以无法实例化,采用new一个DefaultHttpClient的实例来创建,然后新建一个HttpGet对象来表示我们需要访问的网址,接着调用HttpClient的execute()方法即可完成访问请求。
execute()方法会返回一个HttpResponse对象,里面就包含服务器返回给我们的对象,HttpResponse.getEntity()可以取得返回的具体内容,然后利用EntityUtils.toString(entity)就可以得到返回的字符串数据。
private void requestUrlClien() { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { HttpClient httpClient=new DefaultHttpClient(); HttpGet httpGet=new HttpGet("http://www.baidu.com"); HttpResponse httpResponse=httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode()==200) {//等于200说明请求成功 HttpEntity entity=httpResponse.getEntity(); String response=EntityUtils.toString(entity,"utf-8"); Message message=new Message(); message.what=GET_HTTPREQUEST; message.obj=response; handler.sendMessage(message); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }).start(); }
Handler部分和HttpURLConnection一样。
POST
同样新建HttpClient,然后新建HttpPost对象,传入网址,然后通过NameValuePair的List来存储要提交上去的参数,调用add(new BasicNameValuePair())来添加参数,然后将List集合传入UrlEncodedFormEntity对象中,最后调用HttpPost.setEntity();
List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("username", "admin"));params.add(new BasicNameValuePair("password", "123456"));UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");httpPost.setEntity(entity);httpClient.execute(httpPost);
- Android学习-Http请求
- Android Thinkandroid学习之 http请求
- http请求学习笔记
- http请求学习
- http请求学习总结
- android http post请求
- android 实现http请求
- 【Android】Http请求
- android 实现http请求
- Android Http请求
- android http请求
- Android封装Http请求
- android http 请求方式
- 【Android】Http请求
- Android HTTP请求处理
- android http请求
- Android http请求代码
- android发送http请求
- hdu 1423 Greatest Common Increasing Subsequence(最长公共上升子序列dp)
- JavaSE学习笔记_7:Java内部类
- 小demo—实现访问网站总人数的记录
- [LeetCode]33 旋转后的有序数组中的搜索
- 11.Kibana用户指南(User Guide)
- Android学习-Http请求
- mysql数据库char与varchar区别
- Cacti安装教程
- spring ibatis struts
- 项目中关于clone的一些感悟
- CSS3学习
- JavaSE学习笔记_6:Java-Object类
- **个人编程中提出的一些问题及解决办法**
- [Google EarlGrey] 0x02 API 简介