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开发者来说,应该是非常 ...
随机推荐
- java 钱币的单位转换
将钱转成转换为带指定单位的钱 int money = 10; NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US); System ...
- 第一篇、Apache和Tomcat的整合
1.web架构 首先上图,解释web通用架构 通常情况下分为三大块 : ★ Web server : 通常情况下由 Apache Http Server . IBM Http Server .I ...
- SQL server抽疯后修改sa密码无法成功的处理办法
今天上班打开电脑,发现尼玛所有项目启动后都报错,原因是说数据库sa的验证错误,无法进行数据库链接等等东西,简单地说---SQL server抽疯了!!!:( 昨天还好好的.而且没有修改过东西.为啥会出 ...
- WCF,WebAPI,WCFREST和WebService的区别
Web ServiceIt is based on SOAP and return data in XML form.It support only HTTP protocol.It is not o ...
- VS2010调试时候未响应
这几天使用vs2010,调试时候经常未响应,等了半天才缓过来,严重影响心情,决定解决这个问题. 搜寻一番,试着关闭VS,重新设置了vs2010的环境(在vs2010命令提示符下,执行devenv.ex ...
- Core Data 教学
看了一篇国外的文章,关于iOS9的Core Data教学,在这里做了一下总结 Core Data 教学 示例开源地址:LastDayCoreData 在这篇文章中我们将学习Core Data的系列教程 ...
- Unity Manual 用户手册
unity3d 文档的中文网址: http://game.ceeger.com/Manual/
- Spring 创建bean的时机
默认在启动spring容器的时候,spring容器配置文件中的类就已经创建完成对象了 在<bean>中添加属性lazy-init,默认值为false. true 在c ...
- 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...
- ExtJS 4学习
主要是选自<Ext js 权威指南>描述的是Extjs4的版本 模板代码如下:(略有改动,原因是当前文件目录下放置了extjs的包) <!DOCTYPE HTML PUBLIC ...