java模拟http请求的简单介绍
本篇文章给大家谈谈java模拟http请求,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、怎么用java模拟http请求
- 2、怎样用JAVA实现模拟HTTP请求,得到服务器的响应时间等参数
- 3、java用HttpURLConnection(GET) 模拟http请求 如何设置参数的编码
- 4、java模拟http请求指定url
- 5、北大青鸟java培训:http协议请求处理过程?
- 6、linux下java 模拟HTTP请求和window下有上面区别吗
怎么用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;
}
怎样用JAVA实现模拟HTTP请求,得到服务器的响应时间等参数
a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4n1Ddn1ubuHI-Pjc1uycz0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LPHfzPHm4PHczPH0YrjTsr0" target="_blank" class="baidu-highlight"java.net/a.*;
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);
}
}
java用HttpURLConnection(GET) 模拟http请求 如何设置参数的编码
new URL(url); 的时候 参数url就可以像js里一样 拼参数啊
至于编码 那就是url这个字符串 可以直接转编码啊
java模拟http请求指定url
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
}
}
大体上就是这样了。
北大青鸟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服务器的进程看到,原来这个请求是要访问一个网页,于是就把这个网页发给客户端。
linux下java 模拟HTTP请求和window下有上面区别吗
没有区别吧,所有的浏览器都是遵循http协议来发送请求的,有固定的报文头;服务端的返回信息也遵循该协议。
反正我用java写的web应用部署后,linux和window下用浏览器去访问都是一个效果。
java模拟http请求的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java模拟http请求的信息别忘了在本站进行查找喔。
发布于:2022-12-02,除非注明,否则均为
原创文章,转载请注明出处。