关闭

android get和post请求

标签: androidurl
67人阅读 评论(0) 收藏 举报
分类:


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

}
});

}

}





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:394次
    • 积分:73
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档