2015-04-23 263 views
8

我正在開發一個應用程序,使用HTTPclient進行數據傳輸。由於HTTPClient已棄用,因此我想將網絡部分移植到URLConnection已棄用Httpclient

ConectionHttpClient.java

package conexao; 

import java.util.ArrayList; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URI; 

import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.conn.params.ConnManagerParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 

public class ConexaoHttpClient { 
    public static final int HTTP_TIMEOUT = 30 * 1000; 
    private static HttpClient httpClient; 
    private static HttpClient getHttpClient(){ 
     if (httpClient == null){ 
      httpClient = new DefaultHttpClient(); 
      final HttpParams httpParams = httpClient.getParams(); 
      HttpConnectionParams.setConnectionTimeout(httpParams, HTTP_TIMEOUT); 
      HttpConnectionParams.setSoTimeout(httpParams, HTTP_TIMEOUT); 
      ConnManagerParams.setTimeout(httpParams, HTTP_TIMEOUT); 
     }return httpClient; 

    } 

public static String executaHttpPost(String url, ArrayList<NameValuePair> parametrosPost) throws Exception{ 
    BufferedReader bufferedReader = null; 
    try{ 
     HttpClient client = getHttpClient(); 
     HttpPost httpPost = new HttpPost(); 
     UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parametrosPost); 
     httpPost.setEntity(formEntity); 
     HttpResponse httpResponse = client.execute(httpPost); 
     bufferedReader = new BufferedReader(new InputStreamReader(httpPost.getEntity().getContent())); 
     StringBuffer stringBuffer = new StringBuffer(" "); 
     String line = " "; 
     String LS = System.getProperty("line.separator"); 
     while ((line = bufferedReader.readLine()) != null){ 
      stringBuffer.append(line + LS); 
     }bufferedReader.close(); 


    String resultado = stringBuffer.toString(); 
    return resultado; 
}finally{ 
    if (bufferedReader != null){ 
     try{ 
      bufferedReader.close(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
    } 
} 

} 
} 

MainActivity.java

package com.app.arts; 

import java.util.ArrayList; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 

import conexao.ConexaoHttpClient; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public cla`enter code here`ss MainActivity extends Activity { 

    EditText editEmail, editSenha; 
    Button btnEntrar, btnEsqueciSenha, btnCadastrar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    editEmail = (EditText)findViewById(R.id.editEmail); 
    editSenha = (EditText)findViewById(R.id.editSenha); 
    btnEntrar = (Button)findViewById(R.id.btnEntrar); 
    btnEsqueciSenha = (Button)findViewById(R.id.btnEsqueciSenha); 
    btnCadastrar = (Button)findViewById(R.id.btnCadastrar); 

    btnEntrar.setOnClickListener(new View.OnClickListener() { 


     public void onClick(View v){ 

     String urlPost="http://192.168.25.5/arts/admin/login.php"; 
     ArrayList<NameValuePair> parametrosPost = new ArrayList<NameValuePair>(); 
     parametrosPost.add(new BasicNameValuePair("email", editEmail.getText().toString())); 
     parametrosPost.add(new BasicNameValuePair("senha", editSenha.getText().toString())); 
     String respostaRetornada = null; 
     try{ 
     respostaRetornada = ConexaoHttpClient.executaHttpPost(urlPost, parametrosPost); 
     String resposta = respostaRetornada.toString(); 
     resposta = resposta.replaceAll("//s+", ""); 
     if (resposta.equals("1")) 
      mensagemExibir("Login", "Usuario Valido"); 
     else 
      mensagemExibir("Login", "Usuario Invalido"); 
     }catch(Exception erro){ 
      Toast.makeText(MainActivity.this, "Erro: " +erro, Toast.LENGTH_LONG); 
     } 
     }  
     public void mensagemExibir(String titulo, String texto){ 
     AlertDialog.Builder mensagem = new AlertDialog.Builder(MainActivity.this); 
     mensagem.setTitle(titulo); 
     mensagem.setMessage(texto); 
     mensagem.setNeutralButton("OK", null); 
     mensagem.show(); 


    } 


    }); 
} 
} 

回答

2

我使用HttpURLConnection類做這種東西的Android系統。 我用下面的函數來讀取網頁的內容。 我希望這可以幫助你。

public String GetWebPage(String sAddress) throws IOException 
{ 
    StringBuilder sb = new StringBuilder(); 

    BufferedInputStream bis = null; 
    URL url = new URL(sAddress); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
    int responseCode; 

    con.setConnectTimeout(10000); 
    con.setReadTimeout(10000); 

    responseCode = con.getResponseCode(); 

    if (responseCode == 200) 
    { 
     bis = new java.io.BufferedInputStream(con.getInputStream()); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(bis, "UTF-8")); 
     String line = null; 

     while ((line = reader.readLine()) != null) 
     sb.append(line); 

     is.close(); 
    } 

    return sb.toString(); 
} 
2

爲什麼你不使用改造或OkHttp相關HttpClient更多信息?這是很簡單的

public interface GitHubService { 
    @GET("https://stackoverflow.com/users/{user}/repos") 
    List<Repo> listRepos(@Path("user") String user); 
    } 


RestAdapter restAdapter = new RestAdapter.Builder() 
.setEndpoint("https://api.github.com") 
.build(); 

GitHubService service = restAdapter.create(GitHubService.class); 

List<Repo> repos = service.listRepos("octocat"); 

更多信息:http://square.github.io/retrofit/

3

這是獲得我所應用到的HttpClient在這個Android版本22

梅託德的過時的問題的解決方案

public static String getContenxtWeb(String urlS) { 
    String pagina = "", devuelve = ""; 
    URL url; 
    try { 
     url = new URL(urlS); 
     HttpURLConnection conexion = (HttpURLConnection) url 
       .openConnection(); 
     conexion.setRequestProperty("User-Agent", 
       "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"); 
     if (conexion.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      BufferedReader reader = new BufferedReader(
        new InputStreamReader(conexion.getInputStream())); 
      String linea = reader.readLine(); 
      while (linea != null) { 
       pagina += linea; 
       linea = reader.readLine(); 
      } 
      reader.close(); 

      devuelve = pagina; 
     } else { 
      conexion.disconnect(); 
      return null; 
     } 
     conexion.disconnect(); 
     return devuelve; 
    } catch (Exception ex) { 
     return devuelve; 
    } 
} 

Metodo Post

public static final String USER_AGENT = "Mozilla/5.0"; 



public static String sendPost(String _url,Map<String,String> parameter) { 
    StringBuilder params=new StringBuilder(""); 
    String result=""; 
    try { 
    for(String s:parameter.keySet()){ 
     params.append("&"+s+"="); 

      params.append(URLEncoder.encode(parameter.get(s),"UTF-8")); 
    } 


    String url =_url; 
    URL obj = new URL(_url); 
    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); 

    con.setRequestMethod("POST"); 
    con.setRequestProperty("User-Agent", USER_AGENT); 
    con.setRequestProperty("Accept-Language", "UTF-8"); 

    con.setDoOutput(true); 
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(con.getOutputStream()); 
    outputStreamWriter.write(params.toString()); 
    outputStreamWriter.flush(); 

    int responseCode = con.getResponseCode(); 
    System.out.println("\nSending 'POST' request to URL : " + url); 
    System.out.println("Post parameters : " + params); 
    System.out.println("Response Code : " + responseCode); 

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 
    String inputLine; 
    StringBuffer response = new StringBuffer(); 

    while ((inputLine = in.readLine()) != null) { 
     response.append(inputLine + "\n"); 
    } 
    in.close(); 

     result = response.toString(); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (ProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    }finally { 
    return result; 
    } 

}