文档章节

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

先进青年
 先进青年
发布于 2016/11/08 17:17
字数 461
阅读 83
收藏 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
98
3
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
身份证识别接口编写的JAVA调用示例

此java文章是基本聚合数据证件识别接口来演示,基本HTTP POST请求上传图片并接收JSON数据来处理。使用前你需要通过https://www.juhe.cn/docs/api/id/153申请一个名片识别的appkey 1.支持的证...

熊babi
2016/08/16
139
0
从远程服务器获取数据

package com.utils; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; im......

建华1
2015/10/07
211
2

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 Windows 中以服务方式自动重启的原因

针对长时间使用的 Confluence,我们推荐你配置 Confluence 自动随操作系统重启而启动。针对一些 Windows 的服务器,这意味着需要让 Confluence 以服务的方式运行。 有下面 2 种方式来以服务的...

honeymose
39分钟前
2
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
58分钟前
3
0
maven的pom.xml用解决版本问题

maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
今天
1
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
382
18

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部