mark java发起http请求的方式

原创 2018年01月03日 16:31:04

系统间的交互,除了webservice,最简单应该就是http方式。
比如微信平台、支付宝、微博、QQ的api调用。
常用的方式及example:

  • JDK 提供的机制
/**
 * 最简单的使用,参考:https://developer.android.com/reference/java/net/HttpURLConnection.html
 */
URL url = new URL("http://www.android.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
    InputStream in = new BufferedInputStream(urlConnection.getInputStream());
    readStream(in);
} finally {
    urlConnection.disconnect();
}
/**
 * 带cookie 的post请求
 * cookie设置是系统级别的,jvm通用
 **/
public static void main(String[] args) throws IOException, URISyntaxException {
    CookieManager cookieManager = new CookieManager();
    CookieHandler.setDefault(cookieManager);

    HttpCookie cookie = new HttpCookie("sso.dd.com", "b1846e53e99c7");
    cookie.setDomain(".dd.com");
    cookie.setPath("/");
    cookieManager.getCookieStore().add(new URI("http://erp.dd.com/"), cookie);

    URL url = new URL("http://erp.dd.com/portal/clock/clockInfo");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setReadTimeout(1000);
    connection.setConnectTimeout(1000);
    connection.setRequestMethod("POST");
    try {
        InputStream in = new BufferedInputStream(connection.getInputStream());
        readStream(in);
    } finally {
        connection.disconnect();
    }
}
/**
 * spring-web的封装
 * 参考:org.springframework.http.client.SimpleClientHttpRequestFactory
 * 参考:org.springframework.web.client.RestTemplate
 */
  • httpcomponents-client
/**
 * 重试机制,比如重试次数、根据Exception类型、或者动态调整重试请求
 **/
public static HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {

       public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
           System.out.println(exception.getMessage());
           if (executionCount <= 5) {
               // Do not retry if over max retry count
               return true;
           }
           return false;
       }
};

/**
 * 使用httpcomponents-client 发送get请求
 **/
public static void main(String[] args) throws IOException {
      // CloseableHttpClient httpClient = HttpClients.createDefault();
      CloseableHttpClient httpClient = HttpClients.custom().setRetryHandler(myRetryHandler).build();
      RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000).setConnectTimeout(1000).build();
      HttpGet httpget = new HttpGet("http://api.github.com/users/PivotalSoftware");
      httpget.setConfig(requestConfig);
      CloseableHttpResponse response = httpClient.execute(httpget);
      try {
          HttpEntity entity = response.getEntity();
          if (entity != null) {
              InputStream instream = entity.getContent();
              try {
                  readStream(instream);
              } finally {
                  instream.close();
              }
          }
      } finally {
          response.close();
      }
}

参考: 基础使用方式

  • okhttp

    // TODO

版权声明:本文为博主原创文章,未经博主允许不得转载。

如何在java中发起http和https请求

一般调用外部接口会需要用到http和https请求。 一.发起http请求 1.写http请求方法 //处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"...
  • guozili1
  • guozili1
  • 2017年01月03日 15:47
  • 12967

java 常见几种发送http请求案例

下面是作者在工作中总结的几种比较常见的使用java语言发送http请求的方式,希望对大家有所帮助,代码或注解处有不对的地方,欢迎大家留言指正,共同学习共同成长,谢谢大家!...
  • u010197591
  • u010197591
  • 2016年05月18日 09:45
  • 38838

Java发送http的get、post、put请求

1. HTTP GET请求/** * 向指定URL发送GET方法的请求 * * @param url 发送请求的URL * ...
  • qiqishuang
  • qiqishuang
  • 2016年06月12日 10:31
  • 5966

Java生成二维码,转载!感觉不错Mark下(出处:http://www.2cto.com/kf/201108/98471.html)

周末试用下Android手机的二维码扫描软件,扫描了下火车票、名片等等,觉得非常不错很有意思的。当然Java也可以实现这些,现在就分享下如何简单用Java实现二维码中QRCode的编码和解码(可以手机...
  • u010544717
  • u010544717
  • 2014年04月21日 14:51
  • 1175

基于java 使用http-post方式请求https webservice接口

此文章记录使用httppost 方式请求https接口,安全证书默认全部接收。 此方法经测试为可行,希望可以帮到需要的朋友。 /** * 请求https的接口 *  * @param url 接口地址...
  • limengyan123
  • limengyan123
  • 2017年06月09日 09:43
  • 2430

JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求

JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求 哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是...
  • z69183787
  • z69183787
  • 2013年12月26日 12:26
  • 4207

C# 以 HTTP/SSL(双向) 方式请求 Java Jersey 发布的 Restful 资源与TCPSocket客户端

由于项目需要,现在要用C#以HTTP方式请求Java Jersey发布的 Restful资源。自己写了一个工具类,开源一下。 高手请飘过。请不要做非人类的事情,转载请留名!     usi...
  • shibingli
  • shibingli
  • 2011年11月22日 15:49
  • 7649

Http协议网络请求java方式

HTTP消息:客户端请求,服务器响应 主要请求方式: GET:数据附在url后面,只能传字符串,且数据量小,安全性差。 POST:数据量大,支持各种数据类型,安全性高,服务器先接受数据长度再接收内容。...
  • qq_31116683
  • qq_31116683
  • 2015年11月19日 19:21
  • 593

【网络】JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求

JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求   哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是...
  • u011494050
  • u011494050
  • 2015年03月11日 14:31
  • 1192

Java HTTP方式请求ASP.NET(C#)WebService

package com.ideamov.wap.util; import java.io.ByteArrayOutputStream; import java.io.IOException; imp...
  • xiyang_1990
  • xiyang_1990
  • 2013年12月09日 09:27
  • 1160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mark java发起http请求的方式
举报原因:
原因补充:

(最多只允许输入30个字)