文档章节

response = httpclient.execute(httppost); 无反应解决方法

先进青年
 先进青年
发布于 2016/11/08 17:17
字数 461
阅读 203
收藏 0

   @Override
                public void run()
                {
                        // 请求的地址
                        String url = "http://192.168.1.1/MyService/loginAction.action";
                        Log.d("me", "请求服务器进行登录验证的URL:" + url);

                        // 创建一个HttpClient对象
                        HttpClient httpclient = new DefaultHttpClient();

                        // 创建HttpPost
                        HttpPost httppost = null;
                        httppost = new HttpPost(url);

                        // 添加请求参数
                        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
                        formparams.add(new BasicNameValuePair("username", username));
                        formparams.add(new BasicNameValuePair("password", password));

                        UrlEncodedFormEntity uefEntity;

                        try
                        {
                                uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");

                                httppost.setEntity(uefEntity);

                                HttpResponse response;
                                // 执行Post请求
                                response = httpclient.execute(httppost);   //到这里卡住了,不向下执行了。但不抛出任何错误,也没有被catch捕获

                                // 如果请求成功
                                if (response.getStatusLine().getStatusCode() == 200)
                                {
                                        // 获取响应实体
                                        HttpEntity entity = response.getEntity();

                                        if (entity != null)
                                        {
                                                String json = EntityUtils.toString(entity, "UTF-8");
                                                Log.d("me", "从服务器返回的登录验证结果对应的json为:" + json);

                                                // 将json通过Message发送
                                                Message msg = handler.obtainMessage();
                                                msg.obj = json;
                                                handler.sendMessage(msg);
                                        }
                                }
                                else
                                {
                                        Log.d("me", "请求服务器失败,错误代码为:" + response.getStatusLine().getStatusCode());
                                }
                        }
                        catch (ClientProtocolException e)
                        {
                                e.printStackTrace();
                        }
                        catch (UnsupportedEncodingException e)
                        {
                                e.printStackTrace();
                        }
                        catch (IOException e)
                        {
                                e.printStackTrace();
                        }
                }
        }

 

自己的:

public  void ewayAddCard(String nameCard,String cardNub,String mm,String yy,String cvn) {

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("https://api.sandbox.ewaypayments.com/AccessCodes");
        try {
            httpPost.addHeader("Content-Type","application/json");
//            httpPost.addHeader("Authorization","Basic Rjk4MDJDUEY4Mm5TNy9tN1N4UFRQK21MY1U3MGRiNTNZTDBYNjBWa25UVmtPVEJjN2Z5WGVaWlA5WkZqRWpjNzZDOEdGUDpTaGFyZVBhc3M1NTY2");

            if (AccessCode != null&&FormActionURL!=null) {

                String accesscode = AccessCode;
                String fromAction = FormActionURL;
                System.out.println("------------accesscode-----------"+accesscode);
                System.out.println("-----------FormActionURL------------"+FormActionURL);

                HttpPost httpPost2 = new HttpPost(fromAction);

                List<NameValuePair> data = new ArrayList<NameValuePair>();
                data.add(new BasicNameValuePair("EWAY_ACCESSCODE", accesscode));
                data.add(new BasicNameValuePair("EWAY_PAYMENTTYPE", "Credit Card"));
                data.add(new BasicNameValuePair("EWAY_CARDNAME", nameCard));
                data.add(new BasicNameValuePair("EWAY_CARDNUMBER", cardNub));
                data.add(new BasicNameValuePair("EWAY_CARDEXPIRYMONTH", mm));
                data.add(new BasicNameValuePair("EWAY_CARDEXPIRYYEAR", yy));
                data.add(new BasicNameValuePair("EWAY_CARDCVN", cvn));


                httpPost2.setEntity(new UrlEncodedFormEntity(data,"UTF-8"));
                HttpResponse httpResponse2 = httpClient.execute(httpPost2);
                HttpEntity entity2 = httpResponse2.getEntity();
                if (null != entity2) {
                    String responseContent = EntityUtils.toString(entity2, "UTF-8");
                    System.out.println("-----------------------------"+responseContent);
                    if ("Credit Card bind failed".equals(responseContent)){
                        showToastInThread(getResources().getString(R.string.creditCard_fail));
                        this.finish();
                    }
                    else if ("Credit card binding is successful".equals(responseContent)){
                        showToastInThread(getResources().getString(R.string.creditCard_successful));
                        dialogs.dismiss();
                        this.finish();
                    }
                }else {
                    showToastInThread(getResources().getString(R.string.creditCard_fail));
                    dialogs.dismiss();
                    this.finish();
                }
            }
        } catch (Exception e) {
            showToastInThread(getResources().getString(R.string.creditCard_fail));
            e.printStackTrace();
            dialogs.dismiss();
            this.finish();
        } finally{
            httpClient.getConnectionManager().shutdown();
        }
    }

 

我的解决方法是这样的,不知道你们是否适用:

在onCreate方法里面加上这段:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
        .detectDiskReads()
        .detectDiskWrites()
        .detectNetwork()   // or .detectAll() for all detectable problems
        .penaltyLog()
        .build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
        .detectLeakedSqlLiteObjects()
        .detectLeakedClosableObjects()
        .penaltyLog()
        .penaltyDeath()
        .build());

   原因是android阻止了post请求。networkonmain 的exception

© 著作权归作者所有

共有 人打赏支持
先进青年
粉丝 0
博文 28
码字总数 9089
作品 0
武汉
私信 提问
代理请求拦截

想用nginx拦截代理请求到自己后台,比如httpclient的 HttpPost postMethod = new HttpPost(url); HttpHost proxy = new HttpHost("127.0.0.1", 8282); response = httpClient.execute(postMet......

mr_darcy
2017/04/13
145
3
Apache HttpClient 资源释放、请求超时,导致线程池用光、内存不足

Apache HttpClient,据说很强大,可以支持峰值一秒7万以上的请求。不过需要注意一些资源释放和超时处理的问题。 问题1:线程资源无法释放,最终导致内存不足、或线程池被用光。 问题代码: ...

onedotdot
10/17
0
0
HttpClient使用详解(http伪造文件上传请求)

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发...

岸芷汀兰
2015/08/09
0
0
HttpClient 简单测试

当客户端不支持调用jackson转换处理response数据时,报406错误。此时可以手动反序列化为一个string串。 406问题: 方案一、 在服务端手动转json,返回一个字符串。 方案二.、当url 后缀为html,...

中柠檬
2016/12/12
546
0
HttpClientUtil 工具

import org.apache.http.*; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHtt......

心月狐
10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现

作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后(Hystrix 停止开发。。。Spring Cloud 何去何从?),Feign 作为一个跟 ...

Java技术栈
8分钟前
3
0
虚拟机加密

在超融合的基础设施和虚拟化成为常态的世界里,对加密的要求越来越高,越来越迫切,IT部门需考虑的重大安全问题和方法也浮现了出来。 物理数据中心时代,采取双保险式数据安全方法是相对简单...

linuxCool
12分钟前
0
0
MySQL 主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

野雪球
24分钟前
0
0
OSChina 周一乱弹 —— 温柔的人应该这样

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 《フィクション-sumika》 《フィクション-sumika》 手机党少年们想听歌,请使劲儿戳(这里) 假期时间干嘛去, @for...

小小编辑
今天
202
7
[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部