使用Utils工具,创建字节输出流,读取输入流的文本数据时,同时把数据写入到输出流
Utils.java
package com.ldw.htmlView;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class Utils {
public static String getTextFromStream(InputStream is){
byte[] b = new byte[1024];
int len = 0;
//创建字节输出流,读取输入流的文本数据时,同时把数据写入到输出流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
while((len = is.read(b)) != -1){
bos.write(b, 0, len);
}
//把字节数组输出流里面的数据,转换成字节数组
String text = new String(bos.toByteArray());
return text;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
逻辑代码
public class MainActivity extends Activity {
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg){
Toast.makeText(MainActivity.this, (String) msg.obj, Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
String name = et_name.getText().toString();
String pass = et_pass.getText().toString();
final String path = "http://192.168.0.102/web2/servlet/LoginServlet?name=" + URLEncoder.encode(name) + "&pass=" + pass;
Thread t = new Thread(){
@Override
public void run(){
try {
//2.把网址封装成一个url对象
URL url = new URL(path);
//3.获取客户端和服务器的连接对象,此时还没建立连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//4.对链接对象进行初始化
conn.setRequestMethod("GET");
//设置连接超时网络不好或者地址不对
conn.setConnectTimeout(5000);
//设置读取超时客户端读取不到数据
conn.setReadTimeout(5000);
//如果状态码是200请求成功
if(conn.getResponseCode() == 200){
//得到服务器响应头重的流,流中的数据就是客户端请求的额数据
InputStream is = conn.getInputStream();
//读取流里面的数据
String text = Utils.getTextFromStream(is);
Message msg = handler.obtainMessage();
msg.obj = text;
handler.sendMessage(msg);
}else{
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
t.start();
}