Android 子线程请求ASP.NET后台
首先定义布局文件,及点击事件
public class MainActivity extends Activity {
private final int MSG_HELLO = 0;
private Handler mHandler;
private Button btnSubmit;
private EditText txtUsername, txtPassword;
private TextView loginResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
txtUsername = (EditText) findViewById(R.id.username);
txtPassword = (EditText) findViewById(R.id.password);
loginResult = (TextView) findViewById(R.id.loginResult);
btnSubmit.setOnClickListener(new OnClickLoginListener());
}
class OnClickLoginListener implements View.OnClickListener {
@Override
public void onClick(View view) {
String username = txtUsername.getText().toString();
String password = txtPassword.getText().toString();
// 登录请求地址
String url = "http://172.16.18.10:8080/Home/Login";
// 参数封装
Map<String ,String> params = new HashMap<String, String>();
params.put("username",username);
params.put("password",password);
try {
// 请求登录
String result = HttpUtils.postRequest(url, params);
// 讲请求结果转换成 JSON 对象
JSONObject jsonObject = new JSONObject(result);
String message = jsonObject.getString("message");
int status = jsonObject.getInt("status");
// 登录成功
if(status == 1)
{
Log.i("Login","登录成功!");
Intent it = new Intent(MainActivity.this, MainActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("name", message+",username:"+ username +" password:"+password);
it.putExtras(bundle); // it.putExtra(“test”, "mobile”);
startActivity(it); // startActivityForResult(it,REQUEST_CODE);
finish();
}
else
{
loginResult.setText(message);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
HttpUtils
public class HttpUtils {
/*
* @function HttpPost 请求
* @param params 请求参数
* @return 服务器响应字符串
* @throws Exception
*/
public static String postRequest(final String url, final Map<String,String> rawParams ) throws Exception
{
FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
@Override
public String call() throws Exception {
// 创建一个默认的HTTP客户端
DefaultHttpClient httpClient = new DefaultHttpClient();
// 创建 HttpPost 对象
HttpPost post = new HttpPost(url);
// 如果传递参数个数比较多,可以对传递的参数进行封装
List<NameValuePair> params = new ArrayList<NameValuePair>();
for (String key : rawParams.keySet())
{
// 封装请求参数
params.add(new BasicNameValuePair(key,rawParams.get(key)));
}
// 设置请求参数
post.setEntity(new UrlEncodedFormEntity(params, "gbk"));
// 发送 POST 请求
HttpResponse httpResponse = httpClient.execute(post);
// 如果服务器成功地返回响应
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
String result = EntityUtils.toString(httpResponse.getEntity());
return result;
}
return null;
}
});
new Thread(task).start();
return task.get();
}
/*
* @function 下载一个图片
* @param imgPath 图片下载地址
* @return Bitmap 对象
* @throws Exception
*/
public static Bitmap DownloadImage(String imgPath) throws Exception
{
Bitmap bitmap = null;
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(imgPath);
HttpResponse httpResponse = null;
try {
httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
byte[] data = EntityUtils.toByteArray(httpResponse.getEntity());
// 得到一个Bitmap对象,并且为了使其在post内部可以访问,必须声明为final
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
return bitmap;
}
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
}
Android 子线程请求ASP.NET后台的更多相关文章
- Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
- Android子线程更新UI成功
android子线程更新UI成功 今天在写demo的时候,在子线程中更新UI,发现更新成功,记录一下. protected void onCreate(Bundle savedInstanceStat ...
- Android 子线程 UI 操作真的不可以?
作者:vivo 互联网大前端团队- Zhang Xichen 一.背景及问题 某 SDK 有 PopupWindow 弹窗及动效,由于业务场景要求,对于 App 而言,SDK 的弹窗弹出时机具有随机性 ...
- Android 子线程测试
private volatile boolean mStopped = false; private int i; TextView tv1; TextView tv2; @Override prot ...
- Android子线程更新主界面
学习什么的还是要真正的有应用,有需求才能在最短的时间里面牢牢掌握一项技术. 今天就是这样的,产品一个需求下来,十万火急啊.然后之前只稍稍接触过,只能硬着头皮上了.最后牢牢地掌握了最简单的Handler ...
- Android子线程中更新UI的4种方法
方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage ...
- Android子线程更新UI主线程方法之Handler
背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...
- ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询
js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...
- Android子线程更新UI的方法总结
版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...
随机推荐
- c++矩阵运算
优化了一些算法 #pragma once #include <iostream> #include <iomanip> #include <string> #def ...
- transition的四个属性
transition-property 规定设置过渡效果的 CSS 属性的名称. transition-duration 规定完成过渡效果需要多少秒或毫秒. transition-timing-fun ...
- Android开发---支付宝功能接口(支付功能)(转载!)
最近在做一个关于购物商城的项目,项目里面付款这块我选的是调用支付宝的接口,因为用的人比较多. 在网上搜索了以下,有很多这方面的教程,但大部分教程过于陈旧,而且描述的过于简单.而且支付宝提供的接口一直在 ...
- sql查看数据库表使用情况
如有更好的方式,希望交流. 感谢热心人,cc谢过 EXEC sys.sp_MSforeachtable @precommand = N'create table ##( 表名 sys ...
- 函数对象的prototype总结
通过看 http://www.cnblogs.com/mindsbook/archive/2009/09/19/javascriptYouMustKnowPrototype.html 该文章和对代码的 ...
- Android学习笔记(广播机制)
1.Android的广播机制介绍 收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同.接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理.好比我们收听交 ...
- oracle中所有关于时间日期的问题总结
select current_date as 当前会话时间,sysdate as 系统时间, systimestamp as 系统详细时间 from dual;
- JSP技术
1. JSP技术简介 JSP全称是Java Server Pages,它和servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.是sun公司定义的一种规范,JSP实际上就是Se ...
- 十大算法---Adaboost
当我们有针对同一数据集有多个不同的分类器模型时,怎样组合它们使预测分类的结果更加准确, 针对这种情况,机器学习通常两种策略. 1 一种是bagging,一种是boosting bagging:随机对样 ...
- 行列的几种命名方式.line-.colume======.row-.col=========.tr-.td
第一种从line-height的语义来来讲,line表示hang再贴切不过了,colume纵列或者柱子也很形象,缺点太长了 第二种组合模拟rowspan,colspan而来,想必这个col也是colu ...