zoukankan      html  css  js  c++  java
  • Android -- 获取接口数据的三个方法

    1.   compile 'com.loopj.android:android-async-http:1.4.9':

      AsyncHttpClient client = new AsyncHttpClient();
       RequestParams params = new RequestParams();
     params.addHeader(HTTP.CONTENT_TYPE,
                   "application/x-www-form-urlencoded;charset=UTF-8");
            params.put("loginer_id", "4363");
            params.put("tzcodelist", "0047,0046,0043");
            params.put("downlimit", "1");
            params.put("uplimit", "100");
    
    
            client.post(url, params, new JsonHttpResponseHandler() {
                @Override
                public void onSuccess(int statusCode, Header[] headers, String response) {
                    super.onSuccess(statusCode, headers, response);
                    Toast.makeText(getApplication(),"同步数据完成",Toast.LENGTH_SHORT).show();
                    Toast.makeText(getApplication(), response, Toast.LENGTH_LONG).show();
    
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            //在主线程中执行
                            Toast.makeText(getApplication(),"同步数据完成",Toast.LENGTH_SHORT).show();
                        }
                    }, 500);
    
                }
    
                @Override
                public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                    super.onFailure(statusCode, headers, responseString, throwable);
                    Toast.makeText(getApplication(), "同步数据失败", Toast.LENGTH_LONG).show();
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            //在主线程中执行
                            Toast.makeText(getApplication(), "同步数据失败", Toast.LENGTH_LONG).show();
                        }
                    }, 50);
    
                }
    
    
    
            });

    2.   compile 'org.xutils:xutils:3.2.2':

     String url = "http://222.169.11.226:7000/WebServiceAndroidcm.asmx/GetCminfoByTzcodeList";
           // String url = "http://123.232.120.76:6011/api/UserInfo?xq_id=1";
            RequestParams params = new RequestParams(url);
            params.addHeader(HTTP.CONTENT_TYPE,
                   "application/x-www-form-urlencoded;charset=UTF-8");
            params.addBodyParameter("loginer_id", "4363");
            params.addBodyParameter("tzcodelist", "0047,0046,0043");
            params.addBodyParameter("downlimit", "1");
            params.addBodyParameter("uplimit", "100");
    
            x.http().post(params, new Callback.CommonCallback<String>() {
    
                @Override
                public void onCancelled(Callback.CancelledException arg0) {
    
                    Toast.makeText(getApplication(), "cancle", Toast.LENGTH_SHORT).show();
                }
    
                // 注意:如果是自己onSuccess回调方法里写了一些导致程序崩溃的代码,也会回调道该方法,因此可以用以下方法区分是网络错误还是其他错误
                // 还有一点,网络超时也会也报成其他错误,还需具体打印出错误内容比较容易跟踪查看
                @Override
                public void onError(Throwable ex, boolean isOnCallback) {
    
                    Toast.makeText(x.app(), "fuk", Toast.LENGTH_SHORT).show();
                    if (ex instanceof HttpException) { // 网络错误
                        HttpException httpEx = (HttpException) ex;
                        int responseCode = httpEx.getCode();
                        String responseMsg = httpEx.getMessage();
                        String errorResult = httpEx.getResult();
                        Toast.makeText(getApplication(), errorResult, Toast.LENGTH_SHORT).show();
                        // ...
                    } else { // 其他错误
                        // ...
                        Toast.makeText(x.app(), "funck you", Toast.LENGTH_SHORT).show();
                    }
    
                }
    
                // 不管成功或者失败最后都会回调该接口
                @Override
                public void onFinished() {
                 //   Toast.makeText(getApplication(), "llafda", Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onSuccess(String arg0) {
                    Toast.makeText(getApplication(), "chegngonng le ", Toast.LENGTH_SHORT).show();
                }
    
    
    
            });

    3. 自带的http:

       运用原生Java Api发送简单的Get请求、Post请求步骤

    1. 通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)
    2. 设置请求的参数
    3. 发送请求
    4. 以输入流的形式获取返回内容
    5. 关闭输入流
    package me.http;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.InetSocketAddress;
    import java.net.Proxy;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Iterator;
    import java.util.Map;
    
    public class HttpRequestor {
        
        private String charset = "utf-8";
        private Integer connectTimeout = null;
        private Integer socketTimeout = null;
        private String proxyHost = null;
        private Integer proxyPort = null;
        
        /**
         * Do GET request
         * @param url
         * @return
         * @throws Exception
         * @throws IOException
         */
        public String doGet(String url) throws Exception {
            
            URL localURL = new URL(url);
            
            URLConnection connection = this.openConnection(localURL);
            HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
            
            httpURLConnection.setRequestProperty("Accept-Charset", charset);
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
            //响应失败
            if (httpURLConnection.getResponseCode() >= 300) {
                throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
            }
            
            try {
                inputStream = httpURLConnection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStreamReader);
                
                while ((tempLine = reader.readLine()) != null) {
                    resultBuffer.append(tempLine);
                }
                
            } finally {
                
                if (reader != null) {
                    reader.close();
                }
                
                if (inputStreamReader != null) {
                    inputStreamReader.close();
                }
                
                if (inputStream != null) {
                    inputStream.close();
                }
                
            }
    
            return resultBuffer.toString();
        }
        
        /**
         * Do POST request
         * @param url
         * @param parameterMap
         * @return
         * @throws Exception 
         */
        public String doPost(String url, Map parameterMap) throws Exception {
            
            /* Translate parameter map to parameter date string */
            StringBuffer parameterBuffer = new StringBuffer();
            if (parameterMap != null) {
                Iterator iterator = parameterMap.keySet().iterator();
                String key = null;
                String value = null;
                while (iterator.hasNext()) {
                    key = (String)iterator.next();
                    if (parameterMap.get(key) != null) {
                        value = (String)parameterMap.get(key);
                    } else {
                        value = "";
                    }
                    
                    parameterBuffer.append(key).append("=").append(value);
                    if (iterator.hasNext()) {
                        parameterBuffer.append("&");
                    }
                }
            }
            
            System.out.println("POST parameter : " + parameterBuffer.toString());
            
            URL localURL = new URL(url);
            
            URLConnection connection = this.openConnection(localURL);
            HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
            
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setRequestProperty("Accept-Charset", charset);
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));
            
            OutputStream outputStream = null;
            OutputStreamWriter outputStreamWriter = null;
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuffer resultBuffer = new StringBuffer();
            String tempLine = null;
            
            try {
                outputStream = httpURLConnection.getOutputStream();
                outputStreamWriter = new OutputStreamWriter(outputStream);
                
                outputStreamWriter.write(parameterBuffer.toString());
                outputStreamWriter.flush();
                //响应失败
                if (httpURLConnection.getResponseCode() >= 300) {
                    throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
                }
                //接收响应流
             inputStream = httpURLConnection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStreamReader);
                
                while ((tempLine = reader.readLine()) != null) {
                    resultBuffer.append(tempLine);
                }
                
            } finally {
                
                if (outputStreamWriter != null) {
                    outputStreamWriter.close();
                }
                
                if (outputStream != null) {
                    outputStream.close();
                }
                
                if (reader != null) {
                    reader.close();
                }
                
                if (inputStreamReader != null) {
                    inputStreamReader.close();
                }
                
                if (inputStream != null) {
                    inputStream.close();
                }
                
            }
    
            return resultBuffer.toString();
        }
    
        private URLConnection openConnection(URL localURL) throws IOException {
            URLConnection connection;
            if (proxyHost != null && proxyPort != null) {
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
                connection = localURL.openConnection(proxy);
            } else {
                connection = localURL.openConnection();
            }
            return connection;
        }
        
        /**
         * Render request according setting
         * @param request
         */
        private void renderRequest(URLConnection connection) {
            
            if (connectTimeout != null) {
                connection.setConnectTimeout(connectTimeout);
            }
            
            if (socketTimeout != null) {
                connection.setReadTimeout(socketTimeout);
            }
            
        }
    
        /*
         * Getter & Setter
         */
        public Integer getConnectTimeout() {
            return connectTimeout;
        }
    
        public void setConnectTimeout(Integer connectTimeout) {
            this.connectTimeout = connectTimeout;
        }
    
        public Integer getSocketTimeout() {
            return socketTimeout;
        }
    
        public void setSocketTimeout(Integer socketTimeout) {
            this.socketTimeout = socketTimeout;
        }
    
        public String getProxyHost() {
            return proxyHost;
        }
    
        public void setProxyHost(String proxyHost) {
            this.proxyHost = proxyHost;
        }
    
        public Integer getProxyPort() {
            return proxyPort;
        }
    
        public void setProxyPort(Integer proxyPort) {
            this.proxyPort = proxyPort;
        }
    
        public String getCharset() {
            return charset;
        }
    
        public void setCharset(String charset) {
            this.charset = charset;
        }
        
    }

    异步get(石秦): 

     new Thread(new Runnable() {
               String url = "http://123.232.120.76:6011/api/Login?user_name=zll&pwd=1";
                Message msg = new Message();
                @Override
                public void run() {
                    try {
                        URL urlString = new URL(url);
                        //打开url
                        HttpURLConnection connection = (HttpURLConnection)urlString.openConnection();
                        //请求超时
                        connection.setConnectTimeout(2000);
                        //读取超时
                        connection.setReadTimeout(2000);
    
                        //获取请求成功响应码
                        if (connection.getResponseCode() == 200) {
    
                            InputStream is = connection.getInputStream();
                            String json = StreamUtil.streamtoString(is);
                          //  json.replace("[", "");
                         //   json.replace("]", "");
                            Log.d("json", json);
                            System.out.print(json);
                            JSONObject jsonObject = new JSONObject(json);
    
                        }
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                        msg.what = URLERROR;
                        Log.d("url", "aaaa");
                    } catch (IOException e) {
                        e.printStackTrace();
                        msg.what = IOERROR;
                        Log.d("io", "qqqqq");
                    } catch (JSONException e) {
                        e.printStackTrace();
                        msg.what = JSONERROR;
                        Log.d("jsonfailure", "qqqqq");
                    }
                }
            }).start();
  • 相关阅读:
    97.5%准确率的深度学习中文分词(字嵌入+Bi-LSTM+CRF)
    TensorFlow教程——Bi-LSTM+CRF进行序列标注(代码浅析)
    对Attention is all you need 的理解
    SpringBoot入门最详细教程
    TensorFlow saved_model 模块
    hadoop无法启动
    信号
    rpcserver不可用
    4444: [Scoi2015]国旗计划|贪心|倍增
    最小公倍数 SRM 661 Div1 250: MissingLCM
  • 原文地址:https://www.cnblogs.com/mafeng/p/6247309.html
Copyright © 2011-2022 走看看