java发送Http请求

/**
     * 发送主要方法,异常捕获
     * 
     * @param post
     * @param code
     * @return
     */
    public static String doHttpRequest(String url, String param) {
        
        

        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
          //  URLConnection conn = realUrl.openConnection();
            HttpURLConnection connection = (HttpURLConnection)realUrl.openConnection();
            
            connection.addRequestProperty("Content-Type", "application/json;charset=UTF-8");
            connection.addRequestProperty("User-Agent", "mytest");
            connection.setConnectTimeout(60000);
            connection.setReadTimeout(60000);
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.getOutputStream().write(param.getBytes("utf8"));
            
           // connection.setRequestProperty("Content-Type", "application/json");
            int status = connection.getResponseCode();
            
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
            StringBuffer message = new StringBuffer();
            while (reader.ready()) {
              message.append(reader.readLine());
            }
            reader.close();
            connection.connect();
            if (status == 200) {
              return  message.toString();
            }
         
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    
    }

记:
①  connection.addRequestProperty("Content-Type", "application/json;charset=UTF-8");如果是json数据这一个属性不添加,会让接收方收不到数据。
② 如果json数据以map<"String, object"> 的形式组装,当key对应得value为null的时候,会报错,如果以jsonobject.getbytes()以流的形式返回就不会出现这种问题。

 

posted @ 2017-09-14 10:20  LandauNi  阅读(308)  评论(0编辑  收藏  举报