android get和post请求


//把一个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();

}
});

}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值