javahttp使用的简单介绍

博主:adminadmin 2022-12-05 08:27:08 66

今天给各位分享javahttp使用的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java使用Http协议发请求报文?

1.java.net.Socket 中有一个接口叫 PackageReceiver 你创建一个类继承自PackageReceiver

2.自己写一个类ConnectToHost 定义一些常量如

public ConnectToHost()

{

port = 0;

keepAlive = false;

lastCommTime = 0;

connectionCtrl = false;

maxConnection = 10;

connections = new ArrayList();

soTimeOut = 0;

inUsedConnection = 0;

alive = true;

dual = true;

reconnectImmediately = false;

pollingWeight = 1;

}

3.写一个方法用来获取本地要发送的数据,如

private static String getRequestData(String name) throws IOException {

// TODO Auto-generated method stub

File testReq = new File("E:/virturlSend/", name);

// 输入流

FileInputStream infile = null;

InputStreamReader isr = null;

BufferedReader in = null;

String strLine = "";

StringBuffer strTotalLine = new StringBuffer();

try {

infile = new FileInputStream(testReq); // 以流的方式读配置文件

isr = new InputStreamReader(infile);

in = new BufferedReader(isr);

for (int iLine = 1; (strLine = in.readLine()) != null; iLine++) { // 从上传文件中每次读一行

// System.out.println(strLine.getBytes());

strTotalLine.append(strLine);

}

} catch (Exception ee) {

} finally {

in.close();

isr.close();

infile.close();

}

return strTotalLine.toString();

// return "baoyy";

}

4.设置主机信息 如

ConnectToHost connectToHost = new ConnectToHost();

//connectToHost.setHostAddr("20.*2.*.35");

//connectToHost.setPort(27098);

connectToHost.setHostAddr("127.*.*.1");

connectToHost.setPort(6789);

connectToHost.setMaxConnection(20);

5.发送数据

service.addConnectToHost(connectToHost);

以上代码不是全部 仅提供大体思路和构架 不知道能不能帮到您

北大青鸟java培训:http协议请求处理过程?

随着互联网的不断发展,用户在访问互联网的时候使用的终端设备类型也在不断的变化,但是这些都是基于http协议来实现的,下面我们就简单分析一下,http发送请求的处理过程。

HTTP协议是基于TCP协议的,所以它使用面向连接的方式发送请求,通过stream二进制流的方式传给对方。

当然,到了TCP层,它会把二进制流变成一个的报文段发送给服务器。

在发送给每个报文段的时候,都需要对方有一个回应ACK,来保证报文可靠地到达了对方。

如果没有回应,那么TCP这一层会进行重新传输,直到可以到达。

同一个包有可能被传了好多次,但是HTTP这一层不需要知道这一点,因为是TCP这一层在埋头苦干。

TCP层发送每一个报文的时候,都需要加上自己的地址(即源地址)和它想要去的地方(即目标地址),将这两个信息放到IP头里面,交给IP层进行传输。

IP层需要查看目标地址和自己是否是在同一个局域网。

如果是,就发送ARP协议来请求这个目标地址对应的MAC地址,然后将源MAC和目标MAC放入MAC头,发送出去即可。

如果不在同一个局域网,就需要发送到网关,还要需要发送ARP协议,来获取网关的MAC地址,然后将源MAC和网关MAC放入MAC头,发送出去。

网关收到包发现MAC符合,取出目标IP地址,根据路由协议找到下一跳的路由器,获取下一跳路由器的MAC地址,将包发给下一跳路由器。

这样路由器一跳一跳终于到达目标的局域网。

这个时候,后一跳的路由器能够发现,目标地址就在自己的某一个出口的局域网上。

于是,在这个局域网上发送ARP,获得这个目标地址的MAC地址,将包发出去。

目标的机器发现MAC地址符合,就将包收起来;发现IP地址符合,根据IP头中协议项,知道自己上一层是TCP协议,于是解析TCP的头,里面有序列号,IT培训建议需要看一看这个序列包是不是我要的,如果是就放入缓存中然后返回一个ACK,如果不是就丢弃。

TCP头里面还有端口号,HTTP的服务器正在监听这个端口号。

于是,目标机器自然知道是HTTP服务器这个进程想要这个包,于是将包发给HTTP服务器。

HTTP服务器的进程看到,原来这个请求是要访问一个网页,于是就把这个网页发给客户端。

如何用java实现HTTP长连接

咱的理解:

当应用程序读取完响应体内容后或者调用 close() 关闭了URLConnection.getInputStream()返回的流,

JDK中的HTTP协议句柄将关闭连接,并将连接放到连接缓存中。下次获取URLConnection示例,并获取InputStream流时,会再次使用之前打开的TCP连接。

也就是说:

public static String sendPost(String url, String param) { String result = ""; try { URL httpurl = new URL(url); HttpURLConnection httpConn = (HttpURLConnection) httpurl.openConnection(); httpConn.setDoOutput(true); httpConn.setDoInput(true); PrintWriter out = new PrintWriter(httpConn.getOutputStream()); out.print(param); out.flush(); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } in.close(); } catch (Exception e) { System.out.println("没有结果!" + e); } return result; }

咱在间隔较短的时间内调用上面的方法(连接的地址不一样,但还是同一个服务器同一个项目),用的是同一个TCP连接。咱这么理解对吗?不对的话请具体讲讲。谢谢。

如何使用java http发送请求

HttpURLConnection mHttpURLConnection = null; URL mUrl = null; InputStream inputStream = null; try { String url = UrlEncode(mFileType.getStrUrl(), "UTF-8"); //mUrl = new URL(mFileType.getStrUrl()); mUrl = new URL(url); mHttpURLConnection = (HttpURLConnection) mUrl.openConnection(); mHttpURLConnection.setAllowUserInteraction(true); mHttpURLConnection.setRequestMethod("GET"); mHttpURLConnection.setRequestProperty("Range", "bytes=" + startPos + "-" + endPos); mHttpURLConnection.setRequestProperty("Connection", "Keep-Alive"); int responseCode = mHttpURLConnection.getResponseCode(); long length = mHttpURLConnection.getContentLength(); // 判断请求是否成功处理 if (responseCode == HttpStatus.SC_OK||responseCode == HttpStatus.SC_PARTIAL_CONTENT) { inputStream = mHttpURLConnection.getInputStream(); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }

java http服务器有哪些功能

HTTP是个大协议,完整功能的HTTP服务器必须响应资源请求,将URL转换为本地系统的资源名。响应各种形式的HTTP请求(GET、POST等)。处理不存在的文件请求,返回各种形式的状态码,解析MIME类型等。但许多特定功能的HTTP服务器并不需要所有这些功能。例如,很多网站只是想显示“建设中“的消息。很显然,Apache对于这样的网站是大材小用了。这样的网站完全可以使用只做一件事情的定制服务器。Java网络类库使得编写这样的单任务服务器轻而易举。

定制服务器不只是用于小网站。大流量的网站如Yahoo,也使用定制服务器,因为与一般用途的服务器相比,只做一件事情的服务器通常要快得多。针对某项任务来优化特殊用途的服务器很容易;其结果往往比需要响应很多种请求的一般用途服务器高效得多。例如,对于重复用于多页面或大流量页面中的图标和图片,用一个单独的服务器处理会更好(并且还可以避免在请求时携带不必要的Cookie,因而可以减少请求/响应数据,从而减少下载带宽,提升速度);这个服务器在启动时把所有图片文件读入内存,从RAM中直接提供这些文件,而不是每次请求都从磁盘上读取。此外,如果你不想在包含这些图片的页面请求之外单独记录这些图片,这个单独服务器则会避免在日志记录上浪费时间。

本篇为大家简要演示三种HTTP服务器:

(1) 简单的单文件服务器

(2) 重定向服务器

(3) 完整功能的HTTP服务器

javahttp使用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javahttp使用的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-05,除非注明,否则均为首码项目网原创文章,转载请注明出处。