整理Http使用笔记 Android 的http连接提供了两种方式,HttpClient和HttpURLConnection,下面分别记录两个方法的用法
1,HttpURLConnection 通过url.openConnecttion()得到
如URL url = new URL("dddddd"); HttpURLConnection connection = url.openConnection();
然后进行参数设置
connection.setDoOutput(true);connection.setDoInput(true); //设置输入输出流
connection.setRequestMethod("POST"); //设置请求方式,默认为get
connection.setUseCaches(false);//POST请求不能使用缓存
// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
// 要注意的是connection.getOutputStream会隐含的进行connect。
connection.connect(); //DataOutputStream流
DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
//要上传的参数
String content = "par=" + URLEncoder.encode("ABCDEFG", "gb2312");
//将要上传的内容写入流中
out.writeBytes(content);
//刷新、关闭
out.flush();
out.close();
connection.disconnect();
2得到输入流数据
InputStreamReader reader = new InputStreamReader(connection.getInputStream());
StringBuffer sb = new StringBuffer();
BufferReader br= new BufferReader(reader);
String s = null;
while(s=br.readLine()!=null)
sb.append(s+"\n");
reader .close();
二 HttpClient
1HttpGet
//设置请求超时
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 5000;
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
String url = "url";
//httpGet
HttpGet httpGet = new HttpGet(url);
//得到httpClient实例
HttpClient httpClient = new DefaultHttpClient(httpParameters);
try {
HttpResponse response = httpClient.execute(httpGet);
if(response.getStatusLine().getStatusCode()==200){//连接成功
//得到服务器返回数据
String result = EntityUtils.toString(response.getEntity(), "utf-8");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2 HttpPost请求
//设置请求超时
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 5000;
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
String url = "url";
//httpPost
HttpPost httpPost = new HttpPost(url);
//得到httpClient实例
HttpClient httpClient = new DefaultHttpClient(httpParameters);
//post 添加参数
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("key", "value"));
try {
UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(nameValuePairs);
httpPost.setEntity(encodedFormEntity);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
HttpResponse response = httpClient.execute(httpPost);
if(response.getStatusLine().getStatusCode()==200){//连接成功
//得到服务器返回数据
String result = EntityUtils.toString(response.getEntity(), "utf-8");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}