利用HttpClient的POST方式发起带参数的请求时,点击注册按钮无反应状态分析
来源:互联网 发布:ubuntu密码忘记了 编辑:程序博客网 时间:2024/06/06 01:27
适用情况简介
用户注册界面
客户端利用POST方式发起请求,要实现注册时,感觉程序没什么错误,点击下方的“注册”按钮,程序中使用了Toast,但并没有看到“Toast”提示,为什么?
项目分类简介
这是本人的项目列表,方便大家理解代码
代码
下面是我写的代码,为方便找错,我在程序的各个类中加入了Log。
RegistActivity类中部分代码
public void registUser(View v) { User user=new User(); user.setEmail(etEmail.getText().toString()); user.setName(etName.getText().toString()); user.setPassword(etPassword.getText().toString()); user.setRealname(etRealname.getText().toString()); Log.d("TAG", "RegistActivity中的registUser:执行了"); biz.registUser(user,new onRegistFinishListener() { @Override public void onRegistFinish(String result) { if(result==null){ Toast.makeText(RegistActivity.this, "服务器异常请稍后重试", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(RegistActivity.this, result, Toast.LENGTH_SHORT).show(); } } }); }
EmsBiz类中部分代码
public void registUser(User user,onRegistFinishListener listener) { Log.d("TAG", "EmsBiz:执行了"); EmsUtli.registUser(context,user,listener); }
EmsUtil中的部分代码
public static void registUser(Context context, final User user, final onRegistFinishListener listener) { Log.d("TAG", "EmsUtil:执行了"); new AsyncTask<Void, Void, String>(){ @Override protected String doInBackground(Void... params) { try { Log.d("TAG", "doInBackground:执行了"); HttpClient client=new DefaultHttpClient(); HttpPost post=new HttpPost("http://172.88.134.136:8080/ems/regist.do"); //添加一个请求头,对请求实体中的参数做一个说明 post.setHeader("Content-Type","application/x-www-form-urlencoded"); //在post中添加请求参数 //请求参数会添加在请求实体中 List<NameValuePair> parameters=new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("loginname", user.getName())); parameters.add(new BasicNameValuePair("password", user.getPassword())); parameters.add(new BasicNameValuePair("realname", user.getRealname())); parameters.add(new BasicNameValuePair("email", user.getEmail())); HttpEntity entity=new UrlEncodedFormEntity(parameters); post.setEntity(entity); HttpResponse resp=client.execute(post); HttpEntity respEntity = resp.getEntity(); String line=EntityUtils.toString(respEntity); Log.d("TAG", "doInBackground:line执行了"); return line; } catch (Exception e) { e.printStackTrace(); } Log.d("TAG", "doInBackground:null执行了"); return null; } protected void onPostExecute(String result) { Log.d("TAG", "onPostExecute:执行了"); listener.onRegistFinish(result); }; }.execute(); }
结果分析
代码并没有错,可点击注册按钮,就是没反应,还不提示错误。
1. 点击“注册”按钮时,Log提示:
程序到doInBackground就不执行了
注意看代码执行的时间,与下边对比
2. 奇迹出现了
注意对比时间
在傻傻的找了三分钟错误之后,Log的提示又出现了,原来是客户端POST注册时,需要的时间太长,3分钟后给你运行的结果了。
希望本文对大家有用….
1 0
- 利用HttpClient的POST方式发起带参数的请求时,点击注册按钮无反应状态分析
- HttpClient 的GET(带参数)、POST请求方式,工具类方法
- HttpClient发起post请求
- HttpClient发起POST请求
- Socket发起post请求,并保持session的状态
- httpclient发送无参数的post数据
- HttpClient发起GET / POST请求
- HttpClient发起post、get请求
- Java发起Post请求的两种方式
- HttpClient post 和get 带参数请求
- HttpClient--HttpClient的Post请求
- HttpClient的post请求
- HttpClient的Post请求
- HttpClient的post请求
- jquery下的提交,点击按钮没反应,post方法不执行 JSON方式在FORM表单下不起作用
- HttpClient post方式,添加请求参数
- volley带参数的post请求
- 部署按钮点击无反应
- Spring Boot 入门学习(1)
- 排序+自己保存在路径里
- 选择排序1到10000
- 深入理解Java:注解(Annotation)自定义注解入门
- 欢迎使用CSDN-markdown编辑器
- 利用HttpClient的POST方式发起带参数的请求时,点击注册按钮无反应状态分析
- python socket编程
- python学习总结(一)
- 选择排序法——1到10
- (总结)Nginx配置文件nginx.conf中文详解
- iOS字典转字符串类型,NSDictionary 转 NSString转JsonData
- hammer.js手势
- Android的VectorDrawable与AnimatedVectorDrawable
- Java 基本数据类型的取值范围。