欢迎使用CSDN-markdown编辑器
来源:互联网 发布:pack php 编辑:程序博客网 时间:2024/06/06 01:09
(此文章是从网络上摘抄)
一.使用 java 接口
1) 创建 URL 以及 URLConnection / HttpURLConnection 对象
2) 设置连接参数
3) 连接到服务器
4) 向服务器写数据
5) 从服务器读取数据
public class HttpUtils
{
private static final int TIMEOUT_IN_MILLIONS = 5000;public interface CallBack{ void onRequestComplete(String result);}/** * 异步的Get请求 * * @param urlStr * @param callBack */public static void doGetAsyn(final String urlStr, final CallBack callBack){ new Thread() { public void run() { try { String result = doGet(urlStr); if (callBack != null) { callBack.onRequestComplete(result); } } catch (Exception e) { e.printStackTrace(); } }; }.start();}/** * 异步的Post请求 * @param urlStr * @param params * @param callBack * @throws Exception */public static void doPostAsyn(final String urlStr, final String params, final CallBack callBack) throws Exception{ new Thread() { public void run() { try { String result = doPost(urlStr, params); if (callBack != null) { callBack.onRequestComplete(result); } } catch (Exception e) { e.printStackTrace(); } }; }.start();}/** * Get请求,获得返回数据 * * @param urlStr * @return * @throws Exception */public static String doGet(String urlStr){ URL url = null; HttpURLConnection conn = null; InputStream is = null; ByteArrayOutputStream baos = null; try { url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(TIMEOUT_IN_MILLIONS); conn.setConnectTimeout(TIMEOUT_IN_MILLIONS); conn.setRequestMethod("GET"); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); if (conn.getResponseCode() == 200) { is = conn.getInputStream(); baos = new ByteArrayOutputStream(); int len = -1; byte[] buf = new byte[128]; while ((len = is.read(buf)) != -1) { baos.write(buf, 0, len); } baos.flush(); return baos.toString(); } else { throw new RuntimeException(" responseCode is not 200 ... "); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) is.close(); } catch (IOException e) { } try { if (baos != null) baos.close(); } catch (IOException e) { } conn.disconnect(); } return null ;}/** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 * @throws Exception */public static String doPost(String url, String param){ PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 HttpURLConnection conn = (HttpURLConnection) realUrl .openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("charset", "utf-8"); conn.setUseCaches(false); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); conn.setReadTimeout(TIMEOUT_IN_MILLIONS); conn.setConnectTimeout(TIMEOUT_IN_MILLIONS); if (param != null && !param.trim().equals("")) { // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); } // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result;}
}
二.使用 apache 接口
1) 创建 HttpClient 以及 GetMethod / PostMethod, HttpRequest等对象;
2) 设置连接参数;
3) 执行 HTTP 操作;
4) 处理服务器返回结果.
public class HttpUtil {
public static String get(String uri){
BufferedReader reader = null;
StringBuffer sb = null;
String result = “”;
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(uri);
try {
//发送请求,得到响应
HttpResponse response = client.execute(request);
//请求成功 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); sb = new StringBuffer(); String line = ""; String NL = System.getProperty("line.separator"); while((line = reader.readLine()) != null){ sb.append(line); } } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try { if (null != reader){ reader.close(); reader = null; } } catch (IOException e) { e.printStackTrace(); } } if (null != sb){ result = sb.toString(); } return result;}/** * 以post方式发送请求,访问web * @param uri web地址 * @return 响应数据 */public static String post(String uri,Map< String , String > params){ BufferedReader reader = null; StringBuffer sb = null; String result = ""; HttpClient client = new DefaultHttpClient(); HttpPost request = new HttpPost(uri); List<NameValuePair> nvps = new ArrayList <NameValuePair>(); Set<String> keySet = params.keySet(); for(String key : keySet) { nvps.add(new BasicNameValuePair(key, params.get(key))); } //保存要传递的参数 // List<NameValuePair> params = new ArrayList<NameValuePair>(); //添加参数 //params.add(new BasicNameValuePair("parameter","以Post方式发送请求")); try { //设置字符集 HttpEntity entity = new UrlEncodedFormEntity(nvps,"utf-8"); //请求对象 request.setEntity(entity); //发送请求 HttpResponse response = client.execute(request); //请求成功 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ System.out.println("post success"); reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); sb = new StringBuffer(); String line = ""; String NL = System.getProperty("line.separator"); while((line = reader.readLine()) != null){ sb.append(line); } } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try { //关闭流 if (null != reader){ reader.close(); reader = null; } } catch (IOException e) { e.printStackTrace(); } } if (null != sb){ result = sb.toString(); } return result;}
}
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 利用JavaScript中的正则表达式实现常用输入框的验证
- <C++略识>之函数重载
- Android MVP从懵逼到入门:登陆业务实践
- Golang 通关初级(3)
- Android性能优化之运算篇
- 欢迎使用CSDN-markdown编辑器
- 精通C++资源管理-以对象管理资源
- Android事件分发
- C++ pair(对组)用法
- Tomcat 发布目录
- 搭建一个简单的springMVC框架
- Android 百分比布局库的使用
- 109. Convert Sorted List to Binary Search Tree
- C++语言语法你应该知道的(基础篇)