热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WebView,HttpURLConnection,HttpClient的简单使用

1、WebView的简单使用安卓程序有的需要浏览网页,因此android提供了一个控件叫WebView,话不多说,直接使用界面布局代码,就显示一个WebView<RelativeLayoutx

1、WebView的简单使用

安卓程序有的需要浏览网页,因此android提供了一个控件叫WebView,话不多说,直接使用


界面布局代码,就显示一个WebView

    xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
>


android:id="@+id/main_show_webView"
android:layout_
android:layout_

/>



处理的代码

public class MainActivity extends Activity {

private WebView mShowWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {

//设置隐藏标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mShowWebView=(WebView) findViewById(R.id.main_show_webView);

//通过getSettings进行设置,然后设置支持Javascript
mShowWebView.getSettings().setJavascriptEnabled(true);

mShowWebView.setWebViewClient(new WebViewClient(){
@Override
//该方法表明如果从当前网页跳转到别的网页,还是在当前的webView中显示,不使用系统的浏览器
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
//加载页面
mShowWebView.loadUrl("http://www.baidu.com");
}
}



注意设置网络访问权限



2、HttpURLConnection的简单使用


写一个小例子,向百度发送请求,然后得到请求结果

界面布局

    xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:orientation="vertical"
>
处理代码(解释见代码注释)

public class SecondActivity extends Activity {

private Button mSendButton;

private TextView mShowTextView;

private Handler mHandler;

private static final String TAG="SecondActivity";

private static final int SEND_REQUEST=1;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub

requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);
mSendButton=(Button) findViewById(R.id.second_sendButton);

mShowTextView=(TextView) findViewById(R.id.second_responseTextView);
//通过handler接收到从网页获取到的数据,在主线程进行更新
mHandler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==SEND_REQUEST){
StringBuilder result=(StringBuilder) msg.obj;
mShowTextView.setText(result);
}
};
};

mSendButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
sendRequestWithHttpURLConection();
}
});
}

private void sendRequestWithHttpURLConection(){
//由于访问网络是耗时操作,因此开一个子线程
new Thread(new Runnable() {

@Override
public void run() {
HttpURLConnection cOnnection=null;
try {
URL url=new URL("http://www.baidu.com");
//通过给定的url获得connection
cOnnection=(HttpURLConnection) url.openConnection();
//设置请求方法,GET表明从获得数据
connection.setRequestMethod("GET");
//设置超时操作
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
//得到输入流
InputStream in=connection.getInputStream();
//通过输入流读取数据
BufferedReader reader=new BufferedReader(new InputStreamReader(in));

StringBuilder cOntent=new StringBuilder();
String line="";

while((line=reader.readLine())!=null){
content.append(line);
}

//将得到的结果通过handler发送到主线程,在主线程进行UI操作
Message msg=mHandler.obtainMessage(SEND_REQUEST,content);
mHandler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}
}).start();
}

}




3、HttpClient

HttpClient是Apche提供的HTTP网络访问接口,使用比较简单,因为他对一些参数都进行了封装,解释见代码注释

界面代码略

private void sendRequestWithHttpClient() {
new Thread(new Runnable() {

@Override
public void run() {

try {
//HttpClient是一个接口,因此一般new DefaultHttpClient
HttpClient client=new DefaultHttpClient();
//获得HttpClient
HttpGet get=new HttpGet("www.baidu.com");
//执行get请求,得到responce
HttpResponse respOnse=client.execute(get);
//判断是否成功
if(response.getStatusLine().getStatusCode()==200){
//通过EntityUtils将返回内容转化成字符串
String cOntent=EntityUtils.toString(response.getEntity(), "ytf-8");
//发送给mHandler
Message msg = mHandler.obtainMessage(SHOW_RESPONSE,
content); mHandler.sendMessage(msg);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}).start();
}


结果略


推荐阅读
author-avatar
记忆中的光辉明
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有