注意点:
1.添加网络权限 <uses-permission android:name="android.permission.INTERNET"/>
如果没加 会出现 java.lang.SecurityException: Permission denied (missing INTERNET permission?)的错误
2.Http连接是一个耗时操作 必须写在线程中
编码步骤:
1.创建一个URL对象
URL url = new URL("http://xxxxxxxxx"); //双引号中写上要连接的域名;
2.创建一个HttpURLConnection对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3.指定Http请求方式
conn.setRequestMethod("GET");//这里是GET方式,如果要POST方式可以改为POST;
4.设定连接超时时间和读取超时时间
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
5.得到输入流
InputStream in = conn.getInputStream();
6.查看连接是否成功
if(conn.getResponseCode() == 200){ //getResponse()可以得到返回码,如果返回码是200就是正常连接了
System.out.println("http连接成功");
}
else {
System.out.println("连接有误');
}
连接完毕;
至此,我们已经得到了输入流,那么我们从流中取出数据就可以了。用java的输入输出流来执行。
int len=-1; //用来存放数据长度
byte buffer[] = new byte[1024]; //存放数据
ByteArrayOutputStream baos = new ByteArrayOutputStream(); //一个输出流
while((len = in.read(buffer))>0) { //使用read方法从输入流读取数据,read方法返回值是本次实际取回的数据长度,当没数据返 //回-1
baos.write(buffer,0,len); //每次都将数据写入输出流存起
}
in.close(); //关闭流
content = new String(baos.toByteArray()); //输出流转字符串;
得到数据 爽的一批;
最后上一下Activity完整代码
package com.example.khd_test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends Activity implements Runnable{
TextView textView;
Handler handler = new Handler();
String content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView);
new Thread(MainActivity.this).start();
}
public void run() {
// TODO Auto-generated method stub
try {
URL url = new URL("http://xxxxxxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
InputStream in = conn.getInputStream();
if(conn.getResponseCode() == 200){
System.out.println("http连接成功");
}
else {
System.out.println("连接有误");
}
int len=-1;
byte buffer[] = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = in.read(buffer))>0) {
baos.write(buffer,0,len);
}
in.close();
content = new String(baos.toByteArray());
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
textView.setText(content);
}
});
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}