当前位置: 代码迷 >> Android >> 关于HttpClient的有关问题,开发环境为android studio
  详细解决方案

关于HttpClient的有关问题,开发环境为android studio

热度:71   发布时间:2016-04-28 03:01:09.0
关于HttpClient的问题,开发环境为android studio
新手这个代码让我头疼了两天,在模拟器测试不行,但在2.3手机上测试正常,在4.X手机测试失败,最后发现可能是SDK的原因,请教怎么让其它SDK下也能使用?

以下代码当build.gradle文件的配置为
minSdkVersion 7
targetSdkVersion 7
正常

当build.gradle文件的配置为
minSdkVersion 9
targetSdkVersion 21
失败


package com.test.module;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class post {

public static String urlpost() {
    String URL = "http://localhost/post.php";
    HttpPost httpRequest = new HttpPost(URL);

    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("action", "测试测试"));
    try {

        httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

        HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);

        if (httpResponse.getStatusLine().getStatusCode() == 200) {

            return EntityUtils.toString(httpResponse.getEntity());

        } else {
            return "连接服务器失败" ;
        }
    } catch (ClientProtocolException e) {
        return "连接服务器失败" ;

    } catch (IOException e) {
        return "连接服务器失败" ;

    } catch (Exception e) {
        return "连接服务器失败" ;
    }

}
}


感谢解答问题的码友
------解决思路----------------------
这个HTTP没有限制,唯一的区别是4.0以上 网络操作需要放到 单独的线程中运行,你可以看看日志是否有网络错误。
urlpost() 这个方法需要放到线程里面。
------解决思路----------------------
自定义线程,访问网络,用Handler
  相关解决方案