失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android 后台数据获取 android post方式给后台服务器传递数据

android 后台数据获取 android post方式给后台服务器传递数据

时间:2021-02-09 16:01:53

相关推荐

android 后台数据获取 android post方式给后台服务器传递数据

请求方式GET和POST的简单分别:

get方式是把参数附加到URL地址后面,如:

post是将请求参数放到请求体中,以流的方式传到服务器,另外上传文件时,一定是post方式

下面的代码是用post方式模拟用户登录packagecom.yuanlp.qqloginpost;

importandroid.os.Bundle;

importandroid.support.v7.app.AppCompatActivity;

importandroid.text.TextUtils;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.CheckBox;

importandroid.widget.EditText;

importandroid.widget.Toast;

importorg.json.JSONException;

importorg.json.JSONObject;

importjava.io.BufferedReader;

importjava.io.InputStream;

importjava.io.InputStreamReader;

.HttpURLConnection;

.URL;

.URLEncoder;

publicclassMainActivityextendsAppCompatActivity{

privatestaticfinalintLOAD_SUCCESS=1;

privatestaticfinalintLOAD_ERROR=2;

privateEditTextmQqNum;

privateEditTextmQqPwd;

privateCheckBoxmCb_rember;

privateButtonsub;

privateStringmQq;

privateStringmPwd;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mQqNum=(EditText)findViewById(R.id.et_qqNum);

mQqPwd=(EditText)findViewById(R.id.et_pwd);

mCb_rember=(CheckBox)findViewById(R.id.cb_rember);

sub=(Button)findViewById(R.id.bt_sub);

}

/**

*按钮对应的点击方法

*@paramview

*/

publicvoidlogin(Viewview){

//Toast.makeText(this,"点击了提交",Toast.LENGTH_SHORT).show();

mQq=mQqNum.getText().toString().trim();

mPwd=mQqPwd.getText().toString().trim();

//mCb_rember.getText().toString().trim();

if(TextUtils.isEmpty(mQq)||TextUtils.isEmpty(mPwd)){

Toast.makeText(this,"QQ号码或者密码为空",Toast.LENGTH_SHORT).show();

return;

}

//这里设置按钮不能点,应为一直点,就一直发送请求,会造成一直请求数据

sub.setEnabled(false);

/**

*点击按钮事件,在主线程中开启一个子线程进行网络请求

*(因为在4.0只有不支持主线程进行网络请求,所以一般情况下,建议另开启子线程进行网络请求等耗时操作)。

*/

//请求网络

newThread(){

@Override

publicvoidrun(){

try{

Thread.sleep(5000);

Stringpath="http://192.168.1.111:10010/aos/pdaLogin.jhtml";

URLurl=newURL(path);

//打开httpurlconnection

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

conn.setRequestMethod("POST");//设置get方式获取数据

conn.setConnectTimeout(5000);//设置连接超时时间5秒

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");//如果设置方式为post,则必须制定该属性

//将数据进行编码,然后会自动的将该数据放到post中传到后台

Stringdata="username="+URLEncoder.encode(mQq,"utf-8")+"&password="+URLEncoder.encode(mPwd,"utf-8");

//指定长度

conn.setRequestProperty("Content-length",String.valueOf(data.length()));

/**

*post是以流的方式写给服务器

*/

conn.setDoOutput(true);//指定输出模式

conn.getOutputStream().write(data.getBytes());//将要传递的数据写入输出流

intcode=conn.getResponseCode();//获取response状态,200表示成功获取资源,404表示资源不存在

if(code==200){

InputStreamis=conn.getInputStream();

BufferedReaderbr=newBufferedReader(newInputStreamReader(is));

StringBuffersb=newStringBuffer();

Stringlen=null;

while((len=br.readLine())!=null){

sb.append(len);

}

Stringresult=sb.toString();

/**

*这里就不用handler方式来处理子线程的数据了

*/

runToastAnyThread(result);

}

}catch(Exceptione){

e.printStackTrace();

}

}

}.start();

}

/**

*在任何线程中都可以弹出吐司

*@paramresult

*/

privatevoidrunToastAnyThread(finalStringresult){

/**

*在这个run方法里写的任何方法都是在UI线程中执行

*/

runOnUiThread(newRunnable(){

@Override

publicvoidrun(){

JSONObjectjsonObject=null;

try{

jsonObject=newJSONObject(result);

Stringcode=jsonObject.get("appcode").toString();

if("0".equals(code)){

Toast.makeText(getApplicationContext(),"登录失败",Toast.LENGTH_SHORT).show();

}elseif("1".equals(code)){

Toast.makeText(getApplicationContext(),"登录成功",Toast.LENGTH_SHORT).show();

}

sub.setEnabled(true);

}catch(JSONExceptione){

e.printStackTrace();

}

}

});

}

}

如果觉得《android 后台数据获取 android post方式给后台服务器传递数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。