HttpClient请求网络

来源:互联网 发布:apache poi api 编辑:程序博客网 时间:2024/05/16 18:36
//在app下build.gradle添加一行支持HttpClient的代码  ------
useLibrary 'org.apache.http.legacy'

public static void getData(Context content, final String path, final JsonStringData callsback){    //判断网络    if(NetWorkUtil.isConn(content)){        //提示网络        Toast.makeText(content,"网络正常",Toast.LENGTH_SHORT).show();        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                try {                    //client对象                    HttpClient httpclient = new DefaultHttpClient();                    //请求方式                    HttpGet httpget = new HttpGet(path);                    //获得相应对象                    HttpResponse execute = httpclient.execute(httpget);                    //获得                    int statusCode = execute.getStatusLine().getStatusCode();                    //状态码                    if (statusCode == 200) {                        //获得字节输入流                        InputStream inputStream = execute.getEntity().getContent();                        //获得转换完的字符串                        String json = streamToString(inputStream, "utf-8");                        if (json != null) {                            return json;                        }                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String s) {                callsback.getJsonData(s);            }        };        asyncTask.execute();    }}
//运行之前还需要子线程中添加如下代码,因为会报一个证书不匹配的异常,因为新版本将httpclient被
apache移除了

SSLSocketFactory.getSocketFactory().setHostnameVerifier(new AllowAllHostnameVerifier());