`
小于Brick
  • 浏览: 89545 次
  • 性别: Icon_minigender_1
  • 来自: 新疆
社区版块
存档分类
最新评论

java.net.URL get 和post 请求

 
阅读更多

 

调用方式:

String para = "p1=参数1&p2=参数2";
String sr=HttpRequest.sendPost("http://localhost:8080/demo/getUser.json",para);
System.out.println("sr:" + sr);

 

String para = "p1=参数1&p2=参数2";
String sr=HttpRequest.sendGet("http://localhost:8080/demo/getUser.json",para);
System.out.println("sr:" + sr);

 

工具类:HttpRequest.java

import javax.servlet.http.Cookie;
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 {

    public static String sCookie = null;
    /**
     * 向指定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();
            //设置cookie
            if(sCookie!=null && sCookie.length()>0){
                connection.setRequestProperty("Cookie", sCookie);
            }

            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36");

            // 建立实际的连接
            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;
            }

            //获取cookie
            String cookie = connection.getHeaderField("set-cookie");
            if(cookie!=null && cookie.length()>0){
                sCookie = cookie;
            }
            System.out.println("cookie::::::" + sCookie);

        } 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();
            //设置cookie
            if(sCookie!=null && sCookie.length()>0){
                conn.setRequestProperty("Cookie", sCookie);
            }

            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36");

            // 发送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;
            }

            //获取cookie
            String cookie = conn.getHeaderField("set-cookie");
            if(cookie!=null && cookie.length()>0){
                sCookie = cookie;
            }

            System.out.println("cookie::::::" + sCookie);
        } 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;
    }
}

 

 

分享到:
评论

相关推荐

    java.net.URL测试代码

    通过以上步骤,你可以完成一个基本的基于`java.net.URL`和`URLConnection`的网络请求。在实际开发中,考虑到易用性、异常处理和重试机制,往往会选择使用更高级的HTTP客户端库,如Apache HttpClient或OkHttp,它们...

    通过java.net.URLConnection发送HTTP请求

    import java.net.URL; import java.nio.charset.StandardCharsets; public class URLConnectionDemo { public static void main(String[] args) throws IOException { URL url = new URL("http://example.com");...

    java如何利用java.net.URLConnection发送HTTP.docx

    首先,你需要创建一个`java.net.URL`对象,它代表了你要访问的网络资源的地址。例如: ```java URL url = new URL("http://example.com/api"); ``` 2. **打开连接**: 使用URL对象的`openConnection()`方法...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在示例代码中,我们使用HttpGet对象来发送POST请求,并指定请求的URL、请求头和请求体。 使用HttpClient发送POST请求可以帮助我们与HTTPS服务器进行交互,但需要注意证书验证过程。使用X509TrustManager可以忽略...

    Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)

    在Java编程中,Apache HttpClient库是一个非常重要的工具,它提供了丰富的功能来执行HTTP请求,包括GET、POST等方法。这个库使得开发者能够方便地与Web服务器进行交互,处理各种HTTP协议相关的任务。在标题和描述中...

    java后台实现 get post 提交.zip

    在Java中,我们通常使用`java.net.URL`和`java.net.HttpURLConnection`来发送GET请求。以下是一个简单的示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net....

    java利用java.net.URLConnection发送HTTP请求的方法详解

    首先,我们需要创建一个`java.net.URL`对象,该对象代表要访问的资源的统一资源定位符。例如: ```java URL url = new URL("http://example.com"); ``` 2. **建立连接**: 然后,使用URL对象创建一个`...

    【Java】java.net.HttpURLConnection的使用.doc

    在Java编程中,`java.net.HttpURLConnection`是用于处理HTTP协议的基本类,它提供了一种与HTTP服务器通信的简单方式。下面将详细讲解如何使用`HttpURLConnection`进行网页内容获取、Cookie管理以及POST方式的数据...

    java发送http/https请求(get/post)代码

    本文将详细讲解如何使用Java发送GET和POST请求,以及涉及的HTTPS安全连接。 首先,理解HTTP和HTTPS的区别至关重要。HTTP(超文本传输协议)是一种用于分发超媒体信息的应用层协议,而HTTPS(超文本传输安全协议)是...

    java发送get或post请求源码

    这里我们将介绍如何使用这两个类以及`java.io`包中的相关类来构建GET和POST请求。 1. **发送GET请求**: GET请求通常用于获取资源,参数包含在URL中。以下是一个简单的示例: ```java import java.io....

    java 发送https 请求 证书

    3. **发送HTTPS请求**:现在你可以使用HttpClient发送GET或POST请求了: ```java HttpGet request = new HttpGet("https://your.server.com/path"); HttpResponse response = httpClient.execute(request); int ...

    java发送http/https请求(get/post)Demo,亲测可用

    这里我们将深入探讨如何使用Java发送GET和POST请求,以及处理JSON数据。 首先,让我们关注GET请求。GET请求主要用于从服务器获取资源,其参数通常包含在URL中。在Java中,可以使用`HttpURLConnection`类或者第三方...

    java使用url发送post和get请求:HttpConnUtils.jar

    - 在`HttpConnUtils`中,可能有一个`sendGetRequest()`方法,接受URL和参数,将参数编码并添加到URL路径,然后使用`java.net.HttpURLConnection`或`java.net.URLConnection`来建立连接并读取响应。 2. **HTTP POST...

    java发送post和get请求源码及jar包

    这两个例子展示了如何使用Java内置的HttpURLConnection类发送GET和POST请求。然而,对于更复杂的场景,如管理cookies、重定向、超时控制等,使用Apache HttpClient或OkHttp等第三方库可能会更方便和强大。 在实际...

    httpClient需要的JAR包

    7. **实体处理**:对于POST请求,你可以使用`HttpEntityEnclosingRequestBase`子类(如`HttpPost`)来携带请求实体。对于响应实体,`EntityUtils`类提供了一些方便的方法,如`toString()`用于将响应体转化为字符串。...

    java 实现get,post请求

    本篇文章将详细介绍如何在Java中实现GET和POST请求,以及相关的知识点。 首先,我们要了解GET和POST的区别。GET请求通常用于获取资源,其参数附加在URL后面,是可见的,且对数据长度有限制,一般不超过2KB。而POST...

    Java实现HTTP(GET、POST)请求

    在Java中,可以使用`java.net.URL`和`java.net.URLConnection`类来发送GET请求。以下是一个简单的示例: ```java URL url = new URL("http://example.com"); URLConnection connection = url.openConnection(); ...

    service_java接口远程调用_get、post、带参数远程调用_

    Java代码中,可以使用`java.net.URL`和`java.net.HttpURLConnection`类实现: ```java URL url = new URL("http://example.com/api" + "?param1=" + value1 + "&param2=" + value2); HttpURLConnection ...

    Java发送HTTP请求GET/POST测试

    在Java中,我们可以使用`java.net.URL`和`java.net.HttpURLConnection`类来发送GET请求。首先创建URL对象,然后通过openConnection()方法获取HttpURLConnection实例,设置请求方法为GET,并通过connect()方法建立...

Global site tag (gtag.js) - Google Analytics