//把一个inputStream 转换成一个String 类
package com.example.logiddddddn;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamTools {
//把一个inputStream 转换成一个String
public static String readStream(InputStream in) throws Exception{
//定义一个央存输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = -1;
byte[] butter = new byte[1024];
while((len = in.read(butter)) != -1){
baos.write(butter,0,len);
}
in.close();
String content = new String(baos.toByteArray());
return content;
}
}
package com.example.logiddddddn;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.text.style.ClickableSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1 找到控件的对像
et_username = (EditText)findViewById(R.id.te_username);
et_password = (EditText)findViewById(R.id.te_password);
}
//点击按钮 进行get方式提交数据
public void click1(View v){
new Thread(){ public void run(){
try {
//2 拿到控件上的内容
String name = et_username.getText().toString().trim();
String pwd = et_password.getText().toString().trim();
//3 定义get 方式要提交的路经
String path = "http://192.168.1.11:87080/login/LoginServlet?username="+URLEncoder.encode(name,"utf-8")+"&password="+URLEncoder.encode(pwd, "utf-8")+"";
//4
//1 创建 url对像
URL url = new URL(path);
//2 拿到httpurlconnection对像 用发送或乾接收数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//3 设置发送get请求
conn.setRequestMethod("GET"); //get 要求大写, 默认就是get请求
//4 设置请求超时时间
conn.setConnectTimeout(50);
//5 获取服务返回的状态码
int code = conn.getResponseCode();
//5.1 如果code == 200请求成功
if(code == 200){
//6 获取服务器返回的数据 以流的形式返回
InputStream inputStream = conn.getInputStream();
//6.1 把inputstream 转换成String类型
String content = StreamTools.readStream(inputStream);
//7 把服务器返回的数据 展示到Toast上 不能在子线程上展示toast
showToast(content);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}.start();
}
//点击按钮 进行post方式提交数据
public void click2(View v){
new Thread(){ public void run(){
try {
//2 拿到控件上的内容
String name = et_username.getText().toString().trim();
String pwd = et_password.getText().toString().trim();
//3 定义get 方式要提交的路经
// String path = "http://192.168.1.11:87080/login/LoginServlet?username="+name+"&password="+pwd+"";
String data ="username="+URLEncoder.encode(name, "utf-8")+"&ppassword="+URLEncoder.encode(pwd, "utf-8")+"";
// 一 post 请求路经
String path = "http://192.168.11.73:8080/login/LoginServlet";
//4
//1 创建 url对像
URL url = new URL(path);
//2 拿到httpurlconnection对像 用发送或乾接收数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//3 二 设置发送get请求 写城post
conn.setRequestMethod("POST"); //get 要求大写, 默认就是get请求
//4 设置请求超时时间
conn.setConnectTimeout(5000);
//三 和 get方式提交数据 区别要多设置2个请求头信息
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("content-Length",data.length()+"");
//四 把我们组拼好的数据提交服务器
conn.setDoOutput(true); //设置一个标记 允许输出
conn.getOutputStream().write(data.getBytes());
//5 获取服务返回的状态码
int code = conn.getResponseCode();
//5.1 如果code == 200请求成功
if(code == 200){
//6 获取服务器返回的数据 以流的形式返回
InputStream inputStream = conn.getInputStream();
//6.1 把inputstream 转换成String类型
String content = StreamTools.readStream(inputStream);
//7 把服务器返回的数据 展示到Toast上 不能在子线程上展示toast
showToast(content);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}.start();
}
//封装toast方法 该方法执行在主线程
public void showToast(final String content){
runOnUiThread(new Runnable() {
@Override
public void run() {
// 执行在主线程上 弹出信息
Toast.makeText(getApplicationContext(), content, 1).show();
}
});
}
}