HTTP请求以及接收的方式

  • Post author:
  • Post category:其他

请求方式一:

HTTP请求:

JSONObject object=new JSONObject();

object.put(“method”, “xxxxxxx”);

HttpRequest req=new HttpRequest(“http://xxxxxx”);

req.request(object);

HTTP调用类:

public class HttpRequest {

    private static final Logger log = LoggerFactory.getLogger(HttpRequest.class);

    private final String url;
    private OkHttpClient httpClient;
    private ObjectMapper mapper = new ObjectMapper();

    public HttpRequest(String url) {
        this(url, new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request().newBuilder().addHeader(“Connection”, “close”).build();
                return chain.proceed(request);
            }
        }).readTimeout(30, TimeUnit.SECONDS).build());
    }

    public HttpRequest(String url, OkHttpClient client) {
        this.url = url;
        log.info(“Http URL: ” + url);
        httpClient = client;
    }

    public String request(Object content) throws IOException {
        String sendTxt = mapper.writeValueAsString(content);
        RequestBody body = RequestBody.create(MediaType.parse(“application/json; charset=utf-8”), sendTxt);
        Request req = new Request.Builder().url(url).post(body).build();
        log.info(“=> Request: ” + content);
        try (Response rsp = httpClient.newCall(req).execute()) {
            if (!rsp.isSuccessful()) {
                return rsp.message();
            }
            ResponseBody rspBody = rsp.body();
            if (rspBody != null) {
                String json = rspBody.string();
                log.info(“<= Response: ” + json);
                return json;
            } else {
                return “EMPTY RESPONSE”;
            }

        }
    }
}

 

请求方式二:

实体类:

public class HaiKangUpdate {
    private String name;
    private int freenum;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getFreenum() {
        return freenum;
    }
    public void setFreenum(int freenum) {
        this.freenum = freenum;
    }
}

HTTP请求:

List<HaiKangUpdate> listUpdate=new ArrayList<HaiKangUpdate>();

HaiKangUpdate haiKangUpdateB=new HaiKangUpdate();
haiKangUpdateB.setName(“苏州”);
haiKangUpdateB.setFreenum(10000);
listUpdate.add(haiKangUpdateB);

String json = JSON.toJSONString(listUpdate);
String response=HttpPostUtils.httpPost(“http://xxxxxx”, json);

HTTP调用类:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HttpPostUtils {
    private final static Logger logger = LoggerFactory.getLogger(HttpPostUtils.class);
    
    public static String httpPost( String url, String param ) {
        logger.info(“请求地址:”+url);
        logger.info(“请求参数:”+param);
        PrintWriter out = null;
        InputStream is = null;
        BufferedReader br = null;
        String result = “”;
        HttpURLConnection conn = null;
        StringBuffer strBuffer = new StringBuffer();
        try {
            URL realUrl = new URL(url);
            conn = (HttpURLConnection) realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestMethod( “POST”);
            conn.setConnectTimeout(20000);
            conn.setReadTimeout(300000);
            conn.setRequestProperty(“Charset”, “UTF-8”);
 
            // 传输数据为json,如果为其他格式可以进行修改
            conn.setRequestProperty( “Content-Type”, “application/json”);
            conn.setRequestProperty( “Content-Encoding”, “utf-8”);
            // 发送POST请求必须设置如下两行
            conn.setDoOutput( true);
            conn.setDoInput( true);
            conn.setUseCaches( false);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            is = conn.getInputStream();
            br = new BufferedReader( new InputStreamReader(is));
            String line = null;
            while ((line=br.readLine())!= null) {
                strBuffer.append(line);
            }
            result = strBuffer.toString();
        } catch (Exception e) {
            System. out.println( “发送 POST 请求出现异常!” + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (br != null) {
                    br.close();
                }
                if (conn!= null) {
                    conn.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }
}

 

请求方式三:

HTTP请求:

JSONObject params = new JSONObject();
params.put(“list”, jsonArray);          

params.put(“list”, jsonArray);

//请求接口
logger.info(“参数结果:”+params.toJSONString());
String string = ParkInfoHttp.sendPost(requestUrl, params.toJSONString());
ogger.info(“返回结果:”+string);

HTTP调用类:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;

public class ParkInfoHttp {
    
    /**
     * 发送post请求
     * 
     * @param params
     *            参数
     * @param requestUrl
     *            请求地址
     * @return 返回结果
     * @throws IOException
     */
    public static String sendPost(String requestUrl, String params) throws IOException {

        byte[] requestBytes = params.getBytes(“utf-8”); // 将参数转为二进制流
        HttpClient httpClient = new HttpClient();// 客户端实例化
        PostMethod postMethod = new PostMethod(requestUrl);
        // 设置请求头 Content-Type
        postMethod.setRequestHeader(“Content-Type”, “application/json”);
        InputStream inputStream = new ByteArrayInputStream(requestBytes, 0, requestBytes.length);
        RequestEntity requestEntity = new InputStreamRequestEntity(inputStream, requestBytes.length,
                “application/json; charset=utf-8”); // 请求体
        postMethod.setRequestEntity(requestEntity);
        httpClient.executeMethod(postMethod);// 执行请求
        InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 获取返回的流
        byte[] datas = null;
        try {
            datas = readInputStream(soapResponseStream);// 从输入流中读取数据
        } catch (Exception e) {
            e.printStackTrace();
        }
        String result = new String(datas, “UTF-8”);// 将二进制流转为String
        return result;

    }
    
    /**
     * 发送post请求
     * 
     * @param params
     *            参数
     * @param requestUrl
     *            请求地址
     * @param authorization
     *            授权书
     * @return 返回结果
     * @throws IOException
     */
    public static String sendPost(String params, String requestUrl, String authorization) throws IOException {

        byte[] requestBytes = params.getBytes(“utf-8”); // 将参数转为二进制流
        HttpClient httpClient = new HttpClient();// 客户端实例化
        PostMethod postMethod = new PostMethod(requestUrl);
        // 设置请求头Authorization
        if (!isNullOrEmpty(authorization)) {
            postMethod.setRequestHeader(“Authorization”, authorization);
        }
        // 设置请求头 Content-Type
        postMethod.setRequestHeader(“Content-Type”, “application/json”);
        InputStream inputStream = new ByteArrayInputStream(requestBytes, 0, requestBytes.length);
        RequestEntity requestEntity = new InputStreamRequestEntity(inputStream, requestBytes.length,
                “application/json; charset=utf-8”); // 请求体
        postMethod.setRequestEntity(requestEntity);
        httpClient.executeMethod(postMethod);// 执行请求
        InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 获取返回的流
        byte[] datas = null;
        try {
            datas = readInputStream(soapResponseStream);// 从输入流中读取数据
        } catch (Exception e) {
            e.printStackTrace();
        }
        String result = new String(datas, “UTF-8”);// 将二进制流转为String
        return result;

    }
    
    /**
     * 从输入流中读取数据
     * 
     * @param inStream
     * @return
     * @throws Exception
     */
    public static byte[] readInputStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = inStream.read(buffer)) != -1) {
            outStream.write(buffer, 0, len);
        }
        byte[] data = outStream.toByteArray();
        outStream.close();
        inStream.close();
        return data;
    }
    
    // String array
    public static boolean isNullOrEmpty(String… values) {
        for (String value : values) {
            if (isNullOrEmpty(value))
                return true;
        }
        return false;
    }

    // String
    public static boolean isNullOrEmpty(String value) {
        if (null == value || “”.equals(value.trim())) {
            return true;
        }
        return false;
    }
}

 

接收方式一:

@RequestMapping(“/upload”)
@ResponseBody    

public void upload(HttpServletRequest request) throws IOException{
        HttpSession session=request.getSession(false);
        if (session== null) {
            logger.error(“session值:”+session);
            return this.customResult(1005, “session取值为空!”);
        }
        Enumeration<String> names=session.getAttributeNames();
        Map<String,Object> map=null;
        boolean flag=false;
        while(names.hasMoreElements()){
            if(flag){
                break;
            }
            String name=names.nextElement().toString();
            String req=session.getAttribute(name).toString();

            //反序列化数据,获取数据
            CommonParam param=JSONObject.parseObject(req, CommonParam.class);
            String method=param.getMethod();
        }
    }

 

接收方式二:

    @ResponseBody
    @RequestMapping(value = “/xxxxxxx”)
    public void cityParkingList(@RequestBody Map<String, Object> map) {
        try {
            if(map.get(“parkcode”)==null||map.get(“parkcode”).equals(“”)) {
                logger.info(“parkcode参数为空”);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

接收方式三:

    @RequestMapping(“/upload”)
    @ResponseBody
    public void upload(@RequestBody String params) throws IOException{

        logger.error(“params值:”+params);

            if(params!=null) {

                //反序列化数据
                CommonParam param=JSONObject.parseObject(params, CommonParam.class);

                String method=param.getMethod();

            }  

}

 

接收方式四:

    @RequestMapping(value = “/xxxxxx”)
    public void cityParkingList(HttpServletRequest request) {

        try {

            BufferedReader in = new BufferedReader(new                 InputStreamReader(request.getInputStream(),Charset.forName(“UTF-8”)));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = in.readLine()) != null) {
                sb.append(line);
            }
            String jstr=sb.toString();
            logger.info(“接收到字符串为:”+jstr);

        }catch (Exception e) {
            logger.info(“插入数据失败,程序异常”);
            e.printStackTrace();
        }

    }


版权声明:本文为qq_37822897原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。