URLConnection和HTTPClient的比较

38 阅读2分钟

String readLine = null; 

while((readLine =br.readLine()) != null){ 

//response = br.readLine(); 

response = response + readLine; 

is.close(); 

br.close(); 

uRLConnection.disconnect(); 

return response; 

} catch (MalformedURLException e) { 

e.printStackTrace(); 

returnnull; 

} catch (IOException e) { 

e.printStackTrace(); 

returnnull; 

//向服务器发送post请求

public String doPost(String username,String password){ 

try { 

url = new URL(urlAddress); 

uRLConnection = (HttpURLConnection)url.openConnection(); 

uRLConnection.setDoInput(true); 

uRLConnection.setDoOutput(true); 

uRLConnection.setRequestMethod("POST"); 

uRLConnection.setUseCaches(false); 

uRLConnection.setInstanceFollowRedirects(false); 

uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

uRLConnection.connect(); 

DataOutputStream out = new DataOutputStream(uRLConnection.getOutputStream()); 

String content = "username="+username+"&password="+password; 

out.writeBytes(content); 

out.flush(); 

out.close(); 

InputStream is = uRLConnection.getInputStream(); 

BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

String response = ""; 

String readLine = null; 

while((readLine =br.readLine()) != null){ 

//response = br.readLine(); 

response = response + readLine; 

is.close(); 

br.close(); 

uRLConnection.disconnect(); 

return response; 

} catch (MalformedURLException e) { 

e.printStackTrace(); 

returnnull; 

} catch (IOException e) { 

e.printStackTrace(); 

returnnull; 

}

HTTPClient

String urlAddress = "http://192.168.1.102:8080/qualityserver/login.do"; 

public HttpClientServer(){ 

public String doGet(String username,String password){ 

String getUrl = urlAddress + "?username="+username+"&password="+password; 

HttpGet httpGet = new HttpGet(getUrl); 

HttpParams hp = httpGet.getParams(); 

hp.getParameter("true"); 

//hp. //httpGet.setp 

HttpClient hc = new DefaultHttpClient(); 

try { 

HttpResponse ht = hc.execute(httpGet); 

if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ 

HttpEntity he = ht.getEntity(); 

InputStream is = he.getContent(); 

BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

String response = ""; 

String readLine = null; 

while((readLine =br.readLine()) != null){ 

//response = br.readLine(); 

response = response + readLine; 

is.close(); 

br.close(); 

//String str = EntityUtils.toString(he); 

System.out.println("========="+response); 

return response; 

}else{ 

return "error"; 

} catch (ClientProtocolException e) { 

// TODO Auto-generated catch block 

e.printStackTrace(); 

return "exception"; 

} catch (IOException e) { 

// TODO Auto-generated catch block 

e.printStackTrace(); 

return "exception"; 

public String doPost(String username,String password){ 

//String getUrl = urlAddress + "?username="+username+"&password="+password; 

HttpPost httpPost = new HttpPost(urlAddress); 

List params = new ArrayList(); 

NameValuePair pair1 = new BasicNameValuePair("username", username); 

NameValuePair pair2 = new BasicNameValuePair("password", password); 

params.add(pair1); 

params.add(pair2); 

HttpEntity he; 

try { 

he = new UrlEncodedFormEntity(params, "gbk"); 

httpPost.setEntity(he); 

} catch (UnsupportedEncodingException e1) { 

// TODO Auto-generated catch block 

e1.printStackTrace(); 

HttpClient hc = new DefaultHttpClient(); 

try { 

HttpResponse ht = hc.execute(httpPost); 

//连接成功 

if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ 

HttpEntity het = ht.getEntity(); 

InputStream is = het.getContent(); 

BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

String response = ""; 

String readLine = null; 

while((readLine =br.readLine()) != null){ 

//response = br.readLine(); 

response = response + readLine; 

is.close(); 

br.close(); 

//String str = EntityUtils.toString(he); 

System.out.println("=========&&"+response); 

return response; 

}else{ 

return "error"; 

} catch (ClientProtocolException e) { 

// TODO Auto-generated catch block 

e.printStackTrace(); 

return "exception"; 

} catch (IOException e) { 

// TODO Auto-generated catch block 

e.printStackTrace(); 

return "exception"; 

}

servlet端json转化: 

resp.setContentType("text/json"); 

resp.setCharacterEncoding("UTF-8"); 

toDo = new ToDo(); 

List list = new ArrayList(); 

list = toDo.queryUsers(mySession); 

String body; 

//设定JSON 

JSONArray array = new JSONArray(); 

for(UserBean bean : list) 

JSONObject obj = new JSONObject(); 

try

obj.put("username", bean.getUserName()); 

obj.put("password", bean.getPassWord()); 

}catch(Exception e){} 

array.add(obj); 

pw.write(array.toString()); 

System.out.println(array.toString());

android端接收:

String urlAddress = "http://192.168.1.102:8080/qualityserver/result.do"; 

String body = 

getContent(urlAddress); 

JSONArray array = new JSONArray(body); 

for(int i=0;i<array.length();i++) 

obj = array.getJSONObject(i); 

sb.append("用户名:").append(obj.getString("username")).append("\t"); 

sb.append("密码:").append(obj.getString("password")).append("\n"); 

HashMap<String, Object> map = new HashMap<String, Object>(); 

try { 

userName = obj.getString("username"); 

passWord = obj.getString("password"); 

} catch (JSONException e) { 

e.printStackTrace(); 

map.put("username", userName); 

map.put("password", passWord); 

listItem.add(map); 

} catch (Exception e) { 

// TODO Auto-generated catch block 

e.printStackTrace(); 

if(sb!=null) 

showResult.setText("用户名和密码信息:"); 

showResult.setTextSize(20); 

} else

extracted(); 

//设置adapter 

SimpleAdapter simple = new SimpleAdapter(this,listItem, 

android.R.layout.simple_list_item_2, 

new String[]{"username","password"}, 

newint[]{android.R.id.text1,android.R.id.text2}); 

listResult.setAdapter(simple); 

listResult.setOnItemClickListener(new OnItemClickListener() { 

@Override 

publicvoid onItemClick(AdapterView<?> parent, View view, 

int position, long id) { 

int positionId = (int) (id+1); 

Toast.makeText(MainActivity.this, "ID:"+positionId, Toast.LENGTH_LONG).show(); 

}); 

privatevoid extracted() { 

showResult.setText("没有有效的数据!"); 

//和服务器连接 

private String getContent(String url)throws Exception{ 

StringBuilder sb = new StringBuilder(); 

HttpClient client =new DefaultHttpClient(); 

HttpParams httpParams =client.getParams(); 

HttpConnectionParams.setConnectionTimeout(httpParams, 3000); 

HttpConnectionParams.setSoTimeout(httpParams, 5000); 

HttpResponse response = client.execute(new HttpGet(url)); 

HttpEntity entity =response.getEntity(); 

if(entity !=null){ 

BufferedReader reader = new BufferedReader(new InputStreamReader 

(entity.getContent(),"UTF-8"),8192); 

String line =null; 

while ((line= reader.readLine())!=null){ 

sb.append(line +"\n"); 

reader.close(); 

return sb.toString(); 

}

URLConnection

HTTPClient

Proxies and SOCKS

Authorization

Methods

Headers

Automatic Redirection Handling

Persistent Connections

Pipelining of Requests

Can handle protocols other than HTTP

Can do HTTP over SSL (https)

Source code available