Java HttpURLConnection使用

public static String sendPostValidate(String serviceUrl, String postData, String userName, String password){
		PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
        	log.info("POST接口地址:"+serviceUrl);
            URL realUrl = new URL(serviceUrl);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            HttpURLConnection httpUrlConnection = (HttpURLConnection) conn; 
            // 设置通用的请求属性
            httpUrlConnection.setRequestProperty("accept","*/*");
            httpUrlConnection.setRequestProperty("connection", "Keep-Alive");
            httpUrlConnection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            httpUrlConnection.setRequestMethod("POST");
            httpUrlConnection.setRequestProperty("Content-Type","application/json;charset=UTF-8");
            Base64 base64 = new Base64();
    		String encoded = base64.encodeToString(new String(userName+ ":" +password).getBytes());
    		httpUrlConnection.setRequestProperty("Authorization", "Basic "+encoded);
            // 发送POST请求必须设置如下两行
    		httpUrlConnection.setDoOutput(true);
    		httpUrlConnection.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(new OutputStreamWriter(httpUrlConnection.getOutputStream(),"utf-8"));
            // 发送请求参数
            out.print(postData);
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(),"utf-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
//            
//            if (!"".equals(result)) {  
//                BASE64Decoder decoder = new BASE64Decoder();  
//                try {  
//                    byte[] b = decoder.decodeBuffer(result);  
//                    result = new String(b, "utf-8");  
//                } catch (Exception e) {  
//                    e.printStackTrace();  
//                }  
//            }
            return result;
        } catch (Exception e) {
            log.info("调用异常",e);
            throw new RuntimeException(e);
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException e){
                log.info("关闭流异常",e);
            }
        }
	}

亲测可用,


注:userName和password是调用接口存在的验证,如果所需接口不需要登陆验证,则去除相应的地方即可


你可能感兴趣的:(java)