精华内容
下载资源
问答
  • 以下内容转自:http://blog.csdn.net/fachang/article/details/8001093HTTP允许Web服务器和浏览器通过网络发送并接收数据...下载地址:首先介绍一下请求和响应的基本格式HTTP请求信息HTTP请求一般包含三个部分,从上...

    以下内容转自:http://blog.csdn.net/fachang/article/details/8001093

    HTTP允许Web服务器和浏览器通过网络发送并接收数据,是一种基于“request-response”,Http使用可靠的TCP连接,当前最新版本是HTTP/1.1,定义域RFC2616中,下载地址:

    首先介绍一下请求和响应的基本格式

    HTTP请求信息

    HTTP请求一般包含三个部分,从上到下依次是:

    1、第一行:请求方法 URI  协议/版本(例:GET /index.jsp HTTP/1.1)

    2、几行header:  请求头信息(多行,例子:Connection: Keep-Alive)

    3、请求体body:  请求体和请求头之间有一个空行,只能包含回车换行符(CRLF \n\r)

    一个简单请求示例如下:

    POST /login.actionHTTP/1.1

    user-agent=Java/1.6.0_31

    host=localhost:8080

    accept=text/html,image/gif, image/jpeg, *; q=.2, */*; q=.2

    connection=keep-alive

    username=xxx&password=xxx

    注:注意上面请求头和请求体之间必须有一个空行(回车换行符CRLF),这样HTTP服务器才知道请求体从哪里开始。注意请求头中Content-Length: 25是请求体中字节byte数。

    HttpURLConnectionconn = (HttpURLConnection) new URL(url).openConnection();

    conn.setRequestMethod("GET");

    conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)");

    HTTP 响应信息

    响应信息与请求信息类似,也包括三部分:

    1、  协议 状态码  描述  (例: HTTP/1.1 200 OK)

    2、  响应头信息

    3、  响应体

    一个响应示例如下:

    HTTP/1.1 200 OK

    Content-Type: text/html

    Content-Length: xxx

    注:响应头与响应体之间也有一个空行,以表示响应体的开始。

    下面我们介绍一下持久连接 Connection: Keep-Alive新特性

    在1.1版本之前,当服务器将请求的资源返回后,就会断开与客户端浏览器的连接,此时网页上包含的其它资源,如图片等就会通过打开其它连接来下载。对系统来说,打开和关闭一个连接的开销是很大的,所以这样的操作既浪费资源也不搞笑。在1.1版本中,引入了持久连接的概念,当浏览器下载页面后,服务器并不会马上断开连接,而是等页面把所包含的资源都下载完毕后才断开连接,这样页面及页面所包含的所有资源都会通过一个连接来下载。1.1版本中会默认使用持久连接,也可以在请求头信息中手动指定,即设置请求头Connection:Keep-Alive。

    展开全文
  • Java HTTP请求时设置超时

    千次阅读 2021-03-22 11:23:43
    [http是无状态的连接,不像socket可以有timeout的异常,因此在判断...声明一个booleaHTTP请求时设置超时时间是明智的,避免死等。HttpPost request = new HttpPost(requestUrl);HttpClient client = new DefaultHtt...

    [http是无状态的连接,不像socket可以有timeout的异常,因此在判断超时上一直比较困扰.这段时间做j2me的一个小游戏.用到了http连接,学习了论坛上说的一种方法.声明一个boolea

    HTTP请求时设置超时时间是明智的,避免死等。

    HttpPost request = new HttpPost(requestUrl);

    HttpClient client = new DefaultHttpClient();

    client.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);[以前一直在写http请求,设置超时也没怎么认真测试过,今天项目不怎么忙,写了一个http请求测了一下发现以前设置的超时根本没起作用,原来是在发送请求之后设置的超时时间

    //也可以这样,下面这行代码本质上也是通过上面的代码实现

    // HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);

    HttpResponse hps = client.execute(request);

    是否超时可以通过hps.getStatusLine().getStatusCode()来判断。[1.http长连接相关知识http长连接对我们来说并不陌生,但长连接并不是永远不会关闭。对于HTTP长连接需要注意下面几点:keepalive_timeout指的是web服务器发送完最后一个响

    展开全文
  • curl转javaHttp请求

    2021-03-21 09:56:35
    使用java模拟curl,如下面的curl请求转换成javacurl -s -k "http://host:ip/ubus?account_id=xxx" -H "Content-Type: application/json" -H "X-Auth-Role: Partner" -d '{"jsonrpc":"2.0","id": 1,"method":"call",...

    使用java模拟curl,如下面的curl请求转换成java

    curl -s -k "http://host:ip/ubus?account_id=xxx" -H "Content-Type: application/json" -H "X-Auth-Role: Partner" -d '{"jsonrpc":"2.0","id": 1,"method":"call","params":["", "server", "getxxx",{}]}'

    -H请求的URL的Header,

    -d提交的data

    下面为java实例代码

    private String ubusPost(String urlPath, String data) throws IOException {

    // 建立连接

    URL url = new URL(urlPath);

    HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

    // 设置参数

    httpConn.setDoOutput(true); // 需要输出

    httpConn.setDoInput(true); // 需要输入

    httpConn.setUseCaches(false); // 不允许缓存

    httpConn.setRequestMethod("POST"); // 设置POST方式连接

    //设置发送数据的格式

    httpConn.setRequestProperty("Content-Type", "application/json");

    httpConn.setRequestProperty("X-Auth-Role", "Partner");

    // 设置接收数据的格式

    httpConn.setRequestProperty("Accept", "application/json");

    httpConn.setRequestProperty("Connection", "Keep-Alive");

    httpConn.setRequestProperty("Charset", "UTF-8");

    // 连接,也可以不用明文connect,使用下面的httpConn.getOutputStream()会自动connect

    httpConn.connect();

    // 建立输入流,向指向的URL传入参数

    DataOutputStream dos = new DataOutputStream(httpConn.getOutputStream());

    dos.writeBytes(data);

    dos.flush();

    dos.close();

    // 获得响应状态

    int resultCode = httpConn.getResponseCode();

    StringBuffer sb = new StringBuffer();

    if (HttpURLConnection.HTTP_OK == resultCode) {

    String readLine = new String();

    BufferedReader responseReader = new BufferedReader(

    new InputStreamReader(httpConn.getInputStream(), "UTF-8"));

    while ((readLine = responseReader.readLine()) != null) {

    sb.append(readLine).append("\n");

    }

    responseReader.close();

    logger.info(sb.toString());

    }

    return sb.toString();

    }

    展开全文
  • Java Http请求工具类

    千次阅读 2021-10-14 11:50:47
    在对接第三方接口时,需要进行数据交互,于是写了一个 JavaHttp 请求工具类,该工具类可以调用 Get 请求或者 POST 请求。 根据自己业务需求灵活修改 直接上代码: package com.file.license.utils; import org....

    在对接第三方接口时,需要进行数据交互,于是写了一个 JavaHttp 请求工具类,该工具类可以调用 Get 请求或者 POST 请求。

    根据自己业务需求灵活修改

    直接上代码:

    package com.file.license.utils;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.Closeable;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.*;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * @ClassName HttpUtils
     * @Description 请求工具
     * @Author msx
     * @Date 2021-08-26 17:40
     * @Version 1.0
     */
    public class HttpUtils {
        
        /**
         * @Description get请求,参数k-v形式
         * @Author msx
         * @Date 2021-08-26 17:41
         * @param url-[请求地址] headMap-[请求头参数] paramMap-[请求参数]
         * @return String 返回结果
         */
        public static String doGet(String url, Map<String, String> headMap, Map<String, String> paramMap) {
            System.out.println(" = = 请求地址 = = > > > > > > " + url);
            // 创建Httpclient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            String result = "";
            CloseableHttpResponse response = null;
            try {
                //创建uri
                URIBuilder builder = new URIBuilder(url);
                if (paramMap != null && !paramMap.isEmpty()) {
                    Set<Map.Entry<String, String>> entrySet = paramMap.entrySet();
                    for (Map.Entry<String, String> entry : entrySet) {
                        builder.addParameter(entry.getKey(), entry.getValue());
                    }
                }
                URI uri = builder.build();
    
                // 创建http GET请求
                HttpGet httpGet = new HttpGet(uri);
    
                //添加请求头
                if (headMap != null && !headMap.isEmpty()) {
                    Set<Map.Entry<String, String>> entries = headMap.entrySet();
                    System.out.println(" = = 请求头 = = > > > > > > ");
                    for (Map.Entry<String, String> e : entries) {
                        System.out.println(e.getKey() + ":" + e.getValue());
                        httpGet.addHeader(e.getKey(), e.getValue());
                    }
                }
    
                // 执行请求
                response = httpClient.execute(httpGet);
                // 判断返回状态是否为200
                /*if (response.getStatusLine().getStatusCode() == 200) {
                    result = EntityUtils.toString(response.getEntity(), "UTF-8");
                }*/
                HttpEntity entity = response.getEntity();
                result = EntityUtils.toString(entity, "utf-8");
                System.out.println(" = = 请求返回 = = > > > > > > " + result);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                closeResource(response, httpClient);
            }
            return result;
        }
    
        /**
         * @Description post请求,参数k-v形式
         * @Author msx
         * @Date 2021-08-29 21:13
         * @param url-[请求地址] headMap-[请求头参数] paramMap-[请求参数]
         * @return String 返回结果
         */
        public static String doPost(String url, Map<String, String> headMap, Map<String, String> paramMap) {
            System.out.println(" = = 请求地址 = = > > > > > > " + url);
            System.out.println(" = = 请求参数 = = > > > > > > " + paramMap);
            //创建httpClient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            String result = "";
            try{
                //创建uri
                URIBuilder builder = new URIBuilder(url);
                if (paramMap != null && !paramMap.isEmpty()) {
                    Set<Map.Entry<String, String>> entrySet = paramMap.entrySet();
                    for (Map.Entry<String, String> entry : entrySet) {
                        builder.addParameter(entry.getKey(), entry.getValue());
                    }
                }
                URI uri = builder.build();
                //创建http请求
                HttpPost httpPost = new HttpPost(uri);
                //添加请求头
                if (headMap != null && !headMap.isEmpty()) {
                    System.out.println(" = = 请求头 = = > > > > > > ");
                    Set<Map.Entry<String, String>> entries = headMap.entrySet();
                    for (Map.Entry<String, String> entry : entries) {
                        System.out.println(entry.getKey() + ":" + entry.getValue());
                        httpPost.addHeader(entry.getKey(), entry.getValue());
                    }
                }
                // 执行请求
                response = httpClient.execute(httpPost);
                result = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println(" = = 请求返回 = = > > > > > > " + result);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                //关闭资源
                closeResource(response, httpClient);
            }
            return result;
        }
    
        /**
         * @Description post请求,请求体为JSON格式
         * @Author msx
         * @Date 2021-08-27 16:31
         * @param url-[请求地址] headMap-[请求头参数] paramMap-[请求参数]
         * @return String 返回结果
         */
        public static String doPost(String url, Map<String, String> header, String jsonParams){
            System.out.println(" = = 请求地址 = = > > > > > > " + url);
            System.out.println(" = = 请求参数 = = > > > > > > " + jsonParams);
            //创建httpClient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            String result = "";
            try{
                //创建http请求
                HttpPost httpPost = new HttpPost(url);
                httpPost.addHeader("Content-Type", "application/json");
                //创建请求内容
                StringEntity entity = new StringEntity(jsonParams, "utf-8");
                entity.setContentType("application/json");
                httpPost.setEntity(entity);
                // 设置请求头
                if (null != header && !header.isEmpty()) {
                    System.out.println(" = = 请求头 = = > > > > > > ");
                    Set<Map.Entry<String, String>> entries = header.entrySet();
                    for (Map.Entry<String, String> e : entries) {
                        System.out.println(e.getKey() + ":" + e.getValue());
                        httpPost.setHeader(e.getKey(), e.getValue());
                    }
                }
                response = httpClient.execute(httpPost);
                result = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println(" = = 请求返回 = = > > > > > > " + result);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                //关闭资源
                closeResource(response, httpClient);
            }
            return result;
        }
    
        /**
         * @Description 关闭资源
         * @Author msx
         * @Date 2021/9/8 10:44
         */
        private static void closeResource(Closeable ... resources) {
            System.out.println("> > > > > > > > > > 关闭流资源 > > > > > > > > > >");
            try {
                for (Closeable resource : resources) {
                    if (resource != null) {
                        resource.close();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    原创文章,有不足之处还请各路大神多多指点,多多包涵。
    如需转载,请标明出处,不胜感激。
                                                                                                            —— 码上仙

    展开全文
  • 目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现。HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,HttpClient3.1 是 org.apache.commons....
  • 直接上代码:http工具类:public static String httpPostWithjson(String url, String json) throws IOException {String result = "";HttpPost httpPost = new HttpPost(url);CloseableHttpClient httpClient = ...
  • JAVA Http POST请求UTF-8

    2021-02-28 10:33:25
    这项工作!!!package com.erenerdogan.utils;import ...import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.ut...
  • javaHTTP请求压缩

    2021-02-26 20:34:47
    一般用例想象一下正在上传大量JSON的客户端....响应似乎为此目的显式使用Content-Encoding标头,但它不是有效的请求标头.有什么我想念的吗?有没有人找到优雅的解决方案?具体用例我的用例是我有一个...
  • Java接收http请求

    2021-02-12 14:37:04
    //DiskFileItemFactory:创建FileItem对象的工厂//创建DiskFileItemFactory对象DiskFileItemFactory factory = new DiskFileItemFactory();//ServletFileUpload:负责处理上传的文件数据,并将表单中每个输入项封装...
  • java http token请求代码实例

    千次阅读 2021-02-27 21:10:21
    package ...import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import ja...
  • 原生HTTP请求封装JAVA

    2021-02-26 20:06:15
    import org.apache.commons.io....import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;/*** @author rp*/pu...
  • ---------importjavax.net.ssl.*;importjava.io.*;importjava.net.HttpURLConnection;importjava.net.SocketTimeoutException;importjava.net.URL;importjava.net.URLEncoder;importjava.security.cert.Certi...
  • java设置http请求超时时间

    千次阅读 2021-02-26 21:16:55
    java设置http请求超时时间 Java 设置Http 请求超时时间 Java中可以使用HttpURLConnection来请求WEB资源。 HttpURLConnection对象不能直接构造,需要通过URL.openConnection来获 得HttpURLConnection对象,示例代码...
  • 我正在尝试通过具有基本身份验证的httpGet访问API.我的代码是:byte[] encodedBytes = Base64.getEncoder().encode("user:pass".getBytes());HttpGet httpget = new HttpGet("https://app.feedcheck.co/api/reviews"...
  • 今天刚好有位同事问我,用Java请求Http的时候,有时候不希望阻塞太长时间,想做个监视然后可以中断请求的。他的请求是放在独立线程中的,那么怎样中断一个请求?我们先看看Thread的interrupt方法,能否做到这...
  • importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;importjava.ut...
  • package io.renren.common....import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ConnectException;import java....
  • http和https请求共存的时候,经常后端需要判断当前请求是https还是http,根据当前请求的类型返回不同的数据,在这里总结了一下。1、根据请求的Scheme判断,但是这种在Nginx SSL + tomcat集群配置不完全正确的情况...
  • java发送http head请求

    2021-03-04 05:06:40
    java发送http head请求以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!public static void main(String[] args) throws Exception {URL url = new URL...
  • 2、使用 HttpURLConnection 发送 HTTP 请求Java 自带的java.net这个包中包含了很多与网络请求相关的类,这里我们就需要用到该包下的HttpURLConnection类 。2.1、步骤详细说明1、获取http链接对象2、设置请求头信息...
  • Java设置Http请求超时时间

    千次阅读 2021-02-12 20:08:10
    Java中可以使用HttpURLConnection来请求WEB资源。HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConnection对象,示例代码如下:String szUrl = "http://www.zhixing123.cn/";URL ...
  • 1. HttpURLConnection...HttpURLConnection是URLConnection的子类,提供更多的方法,使用更方便。package httpURLConnection;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStrea...
  • try{Stringpath="https://www.AA.com/AA";URLurl=newURL(path);HttpURLConnectioncon=(HttpURLConnection)url.openConnection();con.setRequestMethod("GET");/*con.setRequestProperty("Content-Type","...
  • Android提交post请分享上传图片,Java如何获取HttpEnAndroid端发送post请分享,上传图片,把byte[]弄到HttpEntity里面。 ByteA不知道你的图片是以怎样原理上传的,可以试着将图片转为字符串流,在服务器端读取字符...
  • JAVA如何获取HTTP请求头在利用Java网络编程时,常常需要获取HTTP请求头,那么JAVA如何获取HTTP请求头呢?下面小编为大家介绍了JAVA获取HTTP请求头的.方法,希望能帮到大家!在利用Java网络编程时,利用Java获取HTTP ...
  • java常见的http请求

    2021-03-06 02:36:19
    java常见的http请求库有httpclient,RestTemplate,OKhttp,更高层次封装的 feign、retrofit1、HttpClientHttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplate...
  • HttpURLConnection 有个 setReadTimeout 的方法...public static String doGet(String HTTP_URL, Object object) {BufferedReader reader = null;String result = null;StringBuffer httpUrl = new StringBuffer(HT...
  • 发送端: ... ... 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
  • Java 发送http请求(get、post)

    千次阅读 2021-02-27 21:08:01
    可设置HTTP请求头部信息,可以接收服务器返回cookie信息,可以上传文件等;2.代码实现所需jar包:httpcore-4.4.1.jar;httpclient-4.4.1.jar;httpmime-4.4.1.jar;epoint-utils-9.3.3.jarimport java.io.File;...
  • JavaHTTP请求中传递数组参数的方法

    千次阅读 2021-03-04 05:54:53
    有个功能需要我请求别人提供的接口,该接口的参数是一个多维数组,大致类似这样:1234567891011121314151617181920212223242526$array = array("stock_code" => "600000","fixed_indexes" => array(954,1214),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 960,786
精华内容 384,314
关键字:

javahttp请求

java 订阅