• java发送http的get、post请求


    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
     
    import org.json.JSONArray;
    import org.json.JSONObject;
     
    public class GetJsonData {
     
        public static String getJsonData(JSONObject jsonParam,String urls) {
            StringBuffer sb=new StringBuffer();
            try {
                ;
                // 创建url资源
                URL url = new URL(urls);
                // 建立http连接
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                // 设置允许输出
                conn.setDoOutput(true);
                            // 设置允许输入
                            conn.setDoInput(true);
                           // 设置不用缓存
                           conn.setUseCaches(false);
                           // 设置传递方式
                           conn.setRequestMethod("POST");
                           // 设置维持长连接
                            conn.setRequestProperty("Connection", "Keep-Alive");
                           // 设置文件字符集:
                           conn.setRequestProperty("Charset", "UTF-8");
                           // 转换为字节数组
                           byte[] data = (jsonParam.toString()).getBytes();
                          // 设置文件长度
                           conn.setRequestProperty("Content-Length", String.valueOf(data.length));
                          // 设置文件类型:
                          conn.setRequestProperty("contentType", "application/json");
                            // 开始连接请求
                           conn.connect();        
                        OutputStream out = new DataOutputStream(conn.getOutputStream()) ;
                // 写入请求的字符串
                out.write((jsonParam.toString()).getBytes());
                out.flush();
                out.close();
     
                System.out.println(conn.getResponseCode());
                
                // 请求返回的状态
                if (HttpURLConnection.HTTP_OK == conn.getResponseCode(){
                    System.out.println("连接成功");
                    // 请求返回的数据
                    InputStream in1 = conn.getInputStream();
                    try {
                          String readLine=new String();
                          BufferedReader responseReader=new BufferedReader(new InputStreamReader(in1,"UTF-8"));
                          while((readLine=responseReader.readLine())!=null){
                            sb.append(readLine).append("
    ");
                          }
                          responseReader.close();
                          System.out.println(sb.toString());
                        
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                } else {
                    System.out.println("error++");
                    
                }
     
            } catch (Exception e) {
     
            }
            
            return sb.toString();
     
        }
        public static void main(String[] args) {
            JSONObject jsonParam = new JSONObject();
            jsonParam.put("id", "1401_1406");
            jsonParam.put("device_size", "480x720");
            String url="www.baidu.com";
            String data=GetJsonData.getJsonData(jsonParam,url);
                    //返回的是一个[{}]格式的字符串时:                               
                    JSONArray jsonArray = new JSONArray(data);                       
                   //返回的是一个{}格式的字符串时:                       
                   /*JSONObject obj= new JSONObject(data);*/      
        }
    } 
    package wzh.Http;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Map;
    
    public class HttpRequest {
        /**
         * 向指定URL发送GET方法的请求
         *
         * @param url
         *            发送请求的URL
         * @param param
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return URL 所代表远程资源的响应结果
         */
        public static String sendGet(String url, String param) {
            String result = "";
            BufferedReader in = null;
            try {
                String urlNameString = url + "?" + param;
                URL realUrl = new URL(urlNameString);
                // 打开和URL之间的连接
                URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
                for (String key : map.keySet()) {
                    System.out.println(key + "--->" + map.get(key));
                }
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
        }
    
        /**
         * 向指定 URL 发送POST方法的请求
         *
         * @param url
         *            发送请求的 URL
         * @param param
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return 所代表远程资源的响应结果
         */
        public static String sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取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) {
                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;
        }    
    }

    发送post 参数json

    /**
         * 发送post请求
         * @param url  路径
         * @param jsonObject  参数(json类型)
         * @param encoding 编码格式
         * @return
         * @throws ParseException
         * @throws IOException
         */
        public static String send(String url, JSONObject jsonObject,String encoding) throws ParseException, IOException{
            String body = "";
     
            //创建httpclient对象
            CloseableHttpClient client = HttpClients.createDefault();
            //创建post方式请求对象
            HttpPost httpPost = new HttpPost(url);
     
            //装填参数
            StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
            s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                    "application/json"));
            //设置参数到请求对象中
            httpPost.setEntity(s);
            System.out.println("请求地址:"+url);
    //        System.out.println("请求参数:"+nvps.toString());
     
            //设置header信息
            //指定报文头【Content-type】、【User-Agent】
    //        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
     
            //执行请求操作,并拿到结果(同步阻塞)
            CloseableHttpResponse response = client.execute(httpPost);
            //获取结果实体
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                //按指定编码转换结果实体为String类型
                body = EntityUtils.toString(entity, encoding);
            }
            EntityUtils.consume(entity);
            //释放链接
            response.close();
            return body;
        }
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    import net.sf.json.JSONObject;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicHeader;
    import org.apache.http.protocol.HTTP;
    
    public abstract class TestSend {
    
       // String URL = "url";
    
        public static void main(String[] args) {
    
            JSONObject jsobj1 = new JSONObject();
             jsobj1.put("key","value");
            
            
            //System.out.println(jsobj1);
            post(jsobj1,"url");//注册
        }
    
        public static String post(JSONObject json,String URL) {
    
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(URL);
            post.setHeader("Content-Type", "application/json");
            post.addHeader("Authorization", "Basic YWRtaW46");
            String result = "";
            
            try {
    
                StringEntity s = new StringEntity(json.toString(), "utf-8");
                s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                        "application/json"));
                post.setEntity(s);
    
                // 发送请求
                HttpResponse httpResponse = client.execute(post);
    
                // 获取响应输入流
                InputStream inStream = httpResponse.getEntity().getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        inStream, "utf-8"));
                StringBuilder strber = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null)
                    strber.append(line + "
    ");
                inStream.close();
    
                result = strber.toString();
                System.out.println(result);
                
                if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    
                        System.out.println("请求服务器成功,做相应处理");
                    
                } else {
                    
                    System.out.println("请求服务端失败");
                    
                }
                
    
            } catch (Exception e) {
                System.out.println("请求异常");
                throw new RuntimeException(e);
            }
    
            return result;
        }
    
    }
  • 相关阅读:
    软件工程 2016.6.28 日报
    软件工程课程总结
    工大助手--项目总结
    工大助手--加权平均分计算
    工大助手--数据查询
    7.5
    7月4日日报
    7.3日报
    6.30日报
    6.29.日报
  • 原文地址:https://www.cnblogs.com/aknife/p/13300439.html
Copyright © 2020-2023  润新知