首先定义布局文件,及点击事件

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后台的更多相关文章

  1. Android子线程真的不能更新UI么

    Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...

  2. Android子线程更新UI成功

    android子线程更新UI成功 今天在写demo的时候,在子线程中更新UI,发现更新成功,记录一下. protected void onCreate(Bundle savedInstanceStat ...

  3. Android 子线程 UI 操作真的不可以?

    作者:vivo 互联网大前端团队- Zhang Xichen 一.背景及问题 某 SDK 有 PopupWindow 弹窗及动效,由于业务场景要求,对于 App 而言,SDK 的弹窗弹出时机具有随机性 ...

  4. Android 子线程测试

    private volatile boolean mStopped = false; private int i; TextView tv1; TextView tv2; @Override prot ...

  5. Android子线程更新主界面

    学习什么的还是要真正的有应用,有需求才能在最短的时间里面牢牢掌握一项技术. 今天就是这样的,产品一个需求下来,十万火急啊.然后之前只稍稍接触过,只能硬着头皮上了.最后牢牢地掌握了最简单的Handler ...

  6. Android子线程中更新UI的4种方法

    方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage ...

  7. Android子线程更新UI主线程方法之Handler

    背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...

  8. ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询

    js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...

  9. Android子线程更新UI的方法总结

    版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...

随机推荐

  1. java 钱币的单位转换

    将钱转成转换为带指定单位的钱 int money = 10; NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US); System ...

  2. 第一篇、Apache和Tomcat的整合

    1.web架构 首先上图,解释web通用架构 通常情况下分为三大块 : ★ Web server :  通常情况下由 Apache Http Server  . IBM Http Server  .I ...

  3. SQL server抽疯后修改sa密码无法成功的处理办法

    今天上班打开电脑,发现尼玛所有项目启动后都报错,原因是说数据库sa的验证错误,无法进行数据库链接等等东西,简单地说---SQL server抽疯了!!!:( 昨天还好好的.而且没有修改过东西.为啥会出 ...

  4. 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 ...

  5. VS2010调试时候未响应

    这几天使用vs2010,调试时候经常未响应,等了半天才缓过来,严重影响心情,决定解决这个问题. 搜寻一番,试着关闭VS,重新设置了vs2010的环境(在vs2010命令提示符下,执行devenv.ex ...

  6. Core Data 教学

    看了一篇国外的文章,关于iOS9的Core Data教学,在这里做了一下总结 Core Data 教学 示例开源地址:LastDayCoreData 在这篇文章中我们将学习Core Data的系列教程 ...

  7. Unity Manual 用户手册

    unity3d 文档的中文网址:   http://game.ceeger.com/Manual/

  8. Spring 创建bean的时机

    默认在启动spring容器的时候,spring容器配置文件中的类就已经创建完成对象了        在<bean>中添加属性lazy-init,默认值为false.    true  在c ...

  9. 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...

  10. ExtJS 4学习

      主要是选自<Ext js 权威指南>描述的是Extjs4的版本 模板代码如下:(略有改动,原因是当前文件目录下放置了extjs的包) <!DOCTYPE HTML PUBLIC ...