用java实现模拟http请求的简单介绍

本文目录一览:

如何使用HttpClient包实现JAVA发起HTTP请求

public class HttpClientUtil {

public static String doGet(String url, MapString, String param) {

// 创建Httpclient对象

CloseableHttpClient httpclient = HttpClients.createDefault();

String resultString = “”;

CloseableHttpResponse response = null;

try {

// 创建uri

URIBuilder builder = new URIBuilder(url);

if (param != null) {

for (String key : param.keySet()) {

builder.addParameter(key, param.get(key));

}

}

URI uri = builder.build();

// 创建http GET请求

HttpGet httpGet = new HttpGet(uri);

// 执行请求

response = httpclient.execute(httpGet);

// 判断返回状态是否为200

if (response.getStatusLine().getStatusCode() == 200) {

resultString = EntityUtils.toString(response.getEntity(), “UTF-8”);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (response != null) {

response.close();

}

httpclient.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return resultString;

}

public static String doGet(String url) {

return doGet(url, null);

}

  

public static String doPost(String url, MapString, String param) {

// 创建Httpclient对象

CloseableHttpClient httpClient = HttpClients.createDefault();

CloseableHttpResponse response = null;

String resultString = “”;

try {

// 创建Http Post请求

HttpPost httpPost = new HttpPost(url);

// 创建参数列表

if (param != null) {

ListNameValuePair paramList = new ArrayList();

for (String key : param.keySet()) {

paramList.add(new BasicNameValuePair(key, param.get(key)));

}

// 模拟表单

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);

httpPost.setEntity(entity);

}

// 执行http请求

response = httpClient.execute(httpPost);

    System.out.println(response.getStatusLine());

   resultString = EntityUtils.toString(response.getEntity(), “utf-8”);

System.out.println(resultString);

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

response.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return resultString;

}

public static String doPost(String url) {

return doPost(url, null);

}

public static String doPostJson(String url, String json) {

// 创建Httpclient对象

CloseableHttpClient httpClient = HttpClients.createDefault();

CloseableHttpResponse response = null;

String resultString = “”;

try {

// 创建Http Post请求

HttpPost httpPost = new HttpPost(url);

// 创建请求内容

StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);

httpPost.setEntity(entity);

// 执行http请求

response = httpClient.execute(httpPost);

resultString = EntityUtils.toString(response.getEntity(), “utf-8”);

  } catch (Exception e) {

e.printStackTrace();

} finally {

try {

response.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return resultString;

}

}

怎样用JAVA实现模拟HTTP请求,得到服务器的响应时间等参数

java.net.*;

public class HttpDemo{

    public static void main(String[] args)throws Exception{

        URL url = new URL(‘地址’);

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

        //获取网页的源码

        BufferedReader br = new BufferedReader(new InputStreamReader(http.getInputStream()));

        String line = “”;

        while((line=br.readLine())!=null){

            System.out.println(line);

        }

        br.close();

        //获取参数:

        String value = getRequestProperty(String key);

    }

}

怎样编写http请求的java程序

目前web上的消息通讯方式主要有以下几种。轮询,长连接,websocket轮询:隔一段时间访问服务器,服务器不管有没有新消息都立刻返回。长连接:页面向服务器发出请求,由服务器决定什么时候返回。(如果有新消息则立刻返回,没有的话就保持连接,直到有新消息才返回)websocket:类似JavaSocket,由Http请求模拟实现的socket。要实现长连接的关键就是:由服务器端决定什么时候返回数据。比如在servlet中。doGet(){Thread.sleep(30000);return}这就是一个长连接的例子,只是没有任何意义而已。你要做的就是在doGet中阻塞住,while(!hasNewMsg){sleep(500)}returnnewMsg当然你的ajax超时时间要设置长一点。如果可以的话,最好可以使用websocket。

怎么用java模拟http请求

/*

* 得到返回的内容

*/

public static String getResult(String urlStr, String content) {

URL url = null;

HttpURLConnection connection = null;

try {

url = new URL(urlStr);

connection = (HttpURLConnection) url.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

connection.setRequestMethod(“POST”);

connection.setUseCaches(false);

connection.connect();

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

out.writeBytes(content);

out.flush();

out.close();

BufferedReader reader = new BufferedReader(new InputStreamReader(connection

.getInputStream(), “utf-8”));

StringBuffer buffer = new StringBuffer();

String line = “”;

while ((line = reader.readLine()) != null) {

buffer.append(line);

}

reader.close();

return buffer.toString();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (connection != null) {

connection.disconnect();

}

}

return null;

}

追问:

没注释吗?

追答:

/*

* 得到返回的内容

*/

public static String getResult(String urlStr, String content) {

URL url = null;

HttpURLConnection connection = null;

try {

url = new URL(urlStr);

connection = (HttpURLConnection) url.openConnection();//新建连接实例

connection.setDoOutput(true);//是否打开输出流 true|false

connection.setDoInput(true);//是否打开输入流true|false

connection.setRequestMethod(“POST”);//提交方法POST|GET

connection.setUseCaches(false);//是否缓存true|false

connection.connect();//打开连接端口

DataOutputStream out = new DataOutputStream(connection.getOutputStream());//打开输出流往对端服务器写数据

out.writeBytes(content);//写数据,也就是提交你的表单 name=xxxpwd=xxx

out.flush();//刷新

out.close();//关闭输出流

BufferedReader reader = new BufferedReader(new InputStreamReader(connection

.getInputStream(), “utf-8”));//往对端写完数据 对端服务器返回数据 ,以BufferedReader流来读取

StringBuffer buffer = new StringBuffer();

String line = “”;

while ((line = reader.readLine()) != null) {

buffer.append(line);

}

reader.close();

return buffer.toString();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (connection != null) {

connection.disconnect();//关闭连接

}

}

return null;

}

原创文章,作者:AOADG,如若转载,请注明出处:https://www.506064.com/n/325088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
AOADGAOADG
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论