一、业务逻辑解析
第一步:做出相应的布局的
第二步:找到布局上的组件
第三步:设置相应的点击事件
第四步:请求URL地址
1、创建一个URL对象
URL url_object = new URL(url); //url是字符串 https://www.baidu.com
2、获取一个UrlConnection对象
HttpURLConnection connection = (HttpURLConnection)url_object.openConnection();
3、为UrlConnection对象设置一些参数 请求方式 连接超时时间
connection.setRequestMethod("GET");//设置请求方式
connection.setConnectTimeout(1000*10);//设置超时时间
/4.在获取url请求的数据前需要判断响应码,200 :成功,206:访问部分数据成功 300:跳转或重定向 400:错误 500:服务器异常
if(connection.getResponseCode() == 200){
InputStream input = connection.getInputStream();
inputUtils tostring = new inputUtils();
textString = tostring.inputTostring(input);
}
第五步:获取服务器返回的内容,让其在TextView中显示
textview.setTEXT(textString);
注意:因为使用了网络所以一定要要上权限
<uses-permission android:name="android.permission.INTERNET" />
拓展知识:在安卓中(联网,大文件拷贝,操作数据库)等耗时的操作,要在子线程中做,不然系统容易抛出application not response 应用无响应
package com.alleged.WebViewer;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.alleged.inputstreamUtil.inputUtils;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity implements OnClickListener{
private EditText edittext;
private Button button;
private TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*访问网络需要加Internet权限:
android.permission.INTERNET*/
// 第一步:创建相应的布局文件
// 第二步:找到相对应的控件
edittext = (EditText)findViewById(R.id.ip_adress);
button = (Button)findViewById(R.id.resquest_button);
textview = (TextView)findViewById(R.id.show_content);
// 第三步:设置出相应的点击事件
button.setOnClickListener(this);
// 第四步:请求url地址
// 第五步: 获取服务器的返回的内容,显示到TextView
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
System.out.println("jkjkjkjkj");
String textString = null;
try{
String url = edittext.getText().toString().trim();
System.out.println(url);
//创建一个url对象
URL url_object = new URL(url);
System.out.println("---------");
//获取一个urlConnection对象
HttpURLConnection connection = (HttpURLConnection)url_object.openConnection();
System.out.println("tttttt");
//为urlConnection对象设置一些参数 请求方式 超时时间
connection.setRequestMethod("GET");
connection.setConnectTimeout(1000*10);
//在获取url请求的数据前,需要判断状态吗200是成功 206是访问一部分数据 300是跳转重定向 400是错误 500:是服务器异常
if(connection.getResponseCode()==200){
//获取有效数据
InputStream input = connection.getInputStream();
inputUtils tostring = new inputUtils();
textString = tostring.inputTostring(input);
}
}catch(Exception e){
e.printStackTrace();
}
System.out.println("***********");
System.out.println(textString);
textview.setText(textString);
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.alleged.WebViewer.MainActivity" >
<EditText
android:id="@+id/ip_adress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="https://www.baidu.com/"
android:textSize="16sp"/>
<Button
android:id="@+id/resquest_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="发送请求"
android:textSize="16sp"
/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/show_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
/>
</ScrollView>
</LinearLayout>
package com.alleged.inputstreamUtil;
import java.io.IOException;
import java.io.InputStream;
public class inputUtils {
String res;
public String inputTostring(InputStream input){
byte[] buff = new byte[1024];
int len;
try {
while(-1 != (len = input.read(buff))) {
//将字节数组转换为字符串
res = new String(buff, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
}