为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java实现http连接服务器

2018-05-01 7页 doc 21KB 14阅读

用户头像

is_477730

暂无简介

举报
java实现http连接服务器java实现http连接服务器 package com.xj.http.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net....
java实现http连接服务器
java实现http连接服务器 package com.xj.http.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; /** * 自定的HttpUtil类,用于客户端与服务器进行Http通讯 * 注*:需要导入GSON.jar包 * @author XuJie * */ public class HttpUtil { // 定义请求方式的常量 public static final String METHOD_POST = "POST"; public static final String METHOD_GET = "GET"; private static URL url; private static Gson gson; public HttpUtil() { // TODO Auto-generated constructor stub } static { gson = new Gson(); } /** * 获取服务器返回的原始数据(最好时JSON数据) * * @param params * 填写请求的参数 * @param encode * 字节编码 * @param path * 请求的URL路径 * @param method * 请求方式 * @return */ public static String getMessage(Map params, String encode, String path, String method) { try { url = new URL(path); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 作为StringBuffer初始化的字符串 StringBuffer buffer = new StringBuffer(); try { if (params != null && !params.isEmpty()) { for (Map.Entry entry : params.entrySet()) { // 完成转码操作 buffer.append(entry.getKey()) .append("=") .append(URLEncoder.encode(entry.getValue(), encode)) .append("&"); } // 删除掉最有一个& buffer.deleteCharAt(buffer.length() - 1); } HttpURLConnection urlConnection = (HttpURLConnection) url .openConnection(); urlConnection.setConnectTimeout(5000);// 设置超时时间 urlConnection.setRequestMethod(method);// 设置请求方式 urlConnection.setDoInput(true);// 表示从服务器获取数据 urlConnection.setDoOutput(true);// 表示向服务器写数据 // 获得上传信息的字节大小以及长度 byte[] mydata = buffer.toString().getBytes(); // 表示设置请求体的类型是文本类型 urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); urlConnection.setRequestProperty("Content-Length", String.valueOf(mydata.length)); // 获得输出流,向服务器输出数据 OutputStream outputStream = urlConnection.getOutputStream(); outputStream.write(mydata, 0, mydata.length); outputStream.close(); // 获得服务器响应的结果和状态码 int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { return changeInputStream(urlConnection.getInputStream(), encode); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } /** * 返回Object类型的List集合 * * @param params * 请求参数 * @param encode * 请求编码 * @param path * 请求路径 * @param method * 请求方式 * @param obj * 转换的实体类型 * @return */ public static List listObject(Map params, String encode, String path, String method,Object obj) { String jsonStr = getMessage(params, encode, path, method); List list = null; try { list = gson.fromJson(jsonStr, new TypeToken>() { }.getType()); } catch (Exception e) { e.printStackTrace(); } return list; } /** * 将一个输入流转换成指定编码的字符串 * * @param inputStream * @param encode * @return */ private static String changeInputStream(InputStream inputStream, String encode) { // TODO Auto-generated method stub ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; String result = ""; if (inputStream != null) { try { while ((len = inputStream.read(data)) != -1) { outputStream.write(data, 0, len); } result = new String(outputStream.toByteArray(), encode); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } }
/
本文档为【java实现http连接服务器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索