导航:首页 > 网络设置 > javahttp请求网络设置

javahttp请求网络设置

发布时间:2023-02-14 11:34:03

Ⅰ 北大青鸟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培训http://www.kmbdqn.cn/建议需要看一看这个序列包是不是我要的,如果是就放入缓存中然后返回一个ACK,如果不是就丢弃。
TCP头里面还有端口号,HTTP的服务器正在监听这个端口号。
于是,目标机器自然知道是HTTP服务器这个进程想要这个包,于是将包发给HTTP服务器。
HTTP服务器的进程看到,原来这个请求是要访问一个网页,于是就把这个网页发给客户端。

Ⅱ java使用HttpResponse请求其他系统的接口,对应Postman的设置

首先弄懂测试的需求,比如接口功能测试需求是什么(什么样的输入参数,返回什么样的输出)、接口性能测试需求是什么(最大支持多少并发访问,后台服务器资源配置极限是多少等等)
然后选择一款接口测试工具(一般推荐 POSTMAN JMETER等等),也可以自己开发接口工具。
编写接口功能测试和性能测试的用例(这个和一般的黑盒测试用例差不多,预置条件,测试步骤,预期结果)
使用测试工具或者脚本,执行测试用例。含提交BUG,跟踪BUG闭环等等。
分析测试结果,出具测试报告。
PS:接口的功能测试很简单,一般是访问的URL,带什么参数,然后什么加密方式,然后看返回值符不符合预期就可以了,把各种正常异常情况考虑到。接口性能测试的话除了要设置集合点并发访问后台接口,然后还要在后台服务器加监控,以便于检测系统资源,一般通用的监控指标CPU 内存 网络 等等。当然具体也要看你要测试什么样的接口,弄懂接口的协议再测试。希望能帮到你。

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

1.写http请求方法
[java] view plain

//处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或"POST"
public static String httpRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
URL url=new URL(requestUrl);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(requestMethod);
conn.connect();
//往服务器端写内容 也就是发起http请求需要带的参数
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
2.测试。
[java] view plain

public static void main(String[] args){
String s=httpRequest("http://www.qq.com","GET",null);
System.out.println(s);
}
输出结果为www.qq.com的源代码,说明请求成功。
注:1).第一个参数url需要写全地址,即前边的http必须写上,不能只写www.qq.com这样的。

2).第二个参数是请求方式,一般接口调用会给出URL和请求方式说明。
3).第三个参数是我们在发起请求的时候传递参数到所要请求的服务器,要传递的参数也要看接口文档确定格式,一般是封装成json或xml.
4).返回内容是String类,但是一般是有格式的json或者xml。
二:发起https请求。
1.https是对链接加了安全证书SSL的,如果服务器中没有相关链接的SSL证书,它就不能够信任那个链接,也就不会访问到了。所以我们第一步是自定义一个信任管理器。自要实现自带的X509TrustManager接口就可以了。
[java] view plain

import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class MyX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
}
注:1)需要的包都是java自带的,所以不用引入额外的包。
2.)可以看到里面的方法都是空的,当方法为空是默认为所有的链接都为安全,也就是所有的链接都能够访问到。当然这样有一定的安全风险,可以根据实际需要写入内容。

2.编写https请求方法。
[java] view plain

/*
* 处理https GET/POST请求
* 请求地址、请求方法、参数
* */
public static String httpsRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
//创建SSLContext
SSLContext sslContext=SSLContext.getInstance("SSL");
TrustManager[] tm={new MyX509TrustManager()};
//初始化
sslContext.init(null, tm, new java.security.SecureRandom());;
//获取SSLSocketFactory对象
SSLSocketFactory ssf=sslContext.getSocketFactory();
URL url=new URL(requestUrl);
HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod(requestMethod);
//设置当前实例使用的SSLSoctetFactory
conn.setSSLSocketFactory(ssf);
conn.connect();
//往服务器端写内容
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
可见和http访问的方法类似,只是多了SSL的相关处理。
3.测试。先用http请求的方法访问,再用https的请求方法访问,进行对比。

http访问:
[java] view plain

public static void main(String[] args){
String s=httpRequest("https://kyfw.12306.cn/","GET",null);
System.out.println(s);
}
结果为:

https访问:

[java] view plain

public static void main(String[] args){
String s=httpsRequest("https://kyfw.12306.cn/","GET",null);
System.out.println(s);
}
结果为:

可见https的链接一定要进行SSL的验证或者过滤之后才能够访问。

三:https的另一种访问方式——导入服务端的安全证书。
1.下载需要访问的链接所需要的安全证书。https://kyfw.12306.cn/ 以这个网址为例。
1)在浏览器上访问https://kyfw.12306.cn/。

2)点击上图的那个打了×的锁查看证书。

3)选择复制到文件进行导出,我们把它导入到java项目所使用的jre的lib文件下的security文件夹中去,我的是这个路径。D:\Program Files (x86)\Java\jre8\lib\security

注:中间需要选导出格式,就选默认的就行,还需要命名,我命名的是12306.

2.打开cmd,进入到java项目所使用的jre的lib文件下的security目录。
3.在命令行输入 Keytool -import -alias 12306 -file 12306.cer -keystore cacerts
4.回车后会让输入口令,一般默认是changeit,输入时不显示,输入完直接按回车,会让确认是否信任该证书,输入y,就会提示导入成功。

5.导入成功后就能像请求http一样请求https了。

测试:
[java] view plain

public static void main(String[] args){
String s=httpRequest("https://kyfw.12306.cn/","GET",null);
System.out.println(s);
}
结果:
现在就可以用http的方法请求https了。
注:有时候这一步还是会出错,那可能是jre的版本不对,我们右键run as——run configurations,选择证书所在的jre之后再运行。

Ⅳ java怎么主动发送http请求

实现思路就是先定义请求头内容,之后进行请求头设置。

Ⅳ java HTTP请求 处理

javax.servlet.http.HttpResponse类用于产生返回页面.通过HttpResponse定义的方法getOutputStream()可以获得ServletOutputStream的实例,这样用户就可以利用ServletOutputStream.write方法向输出流中写入返回页面的内容. 但是ServletOutputStream使用的是缺省的编码方式,如果要使返回页面中的中文字 符能够正常显示,最好显示地指定所用的字符编码方式. 通常需要构造一个 OutputStreamWriter , 例程如下:

public void doGet (HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

res.setContentType("text/html");

ServletOutputStream out = res.getOutputStream();

OutputStreamWriter ow = new OutputStreamWriter(out,"GB2312");

ow.write("这是测试");

ow.flush();

ow.close();

}

Ⅵ java 接受http请求

使用servlet


public class Test extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public Test() {

super();

// TODO Auto-generated constructor stub

}


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//接收get请求

// 这里写你接收request请求后要处理的操作

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//接收post请求

// 这里写你接收request请求后要处理的操作

}


}


Ⅶ JAVA程序中的HttpURLConnection或httpclient如何设置intel连接

有多个宽带连接就必须配置多个ip地址,如果网卡不支持多ip,就需要多块网卡设置不同的网络
你用的宽带A对应的ip当然就是用的宽带A

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

publicclassHttpClientUtil{

publicstaticStringdoGet(Stringurl,Map<String,String>param){

//创建Httpclient对象
CloseableHttpClienthttpclient=HttpClients.createDefault();


StringresultString="";
CloseableHttpResponseresponse=null;
try{
//创建uri
URIBuilderbuilder=newURIBuilder(url);
if(param!=null){
for(Stringkey:param.keySet()){
builder.addParameter(key,param.get(key));
}
}
URIuri=builder.build();

//创建httpGET请求
HttpGethttpGet=newHttpGet(uri);

//执行请求
response=httpclient.execute(httpGet);
//判断返回状态是否为200
if(response.getStatusLine().getStatusCode()==200){
resultString=EntityUtils.toString(response.getEntity(),"UTF-8");
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(response!=null){
response.close();
}
httpclient.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnresultString;
}

publicstaticStringdoGet(Stringurl){
returndoGet(url,null);
}

publicstaticStringdoPost(Stringurl,Map<String,String>param){
//创建Httpclient对象
CloseableHttpClienthttpClient=HttpClients.createDefault();
CloseableHttpResponseresponse=null;
StringresultString="";
try{
//创建HttpPost请求
HttpPosthttpPost=newHttpPost(url);
//创建参数列表
if(param!=null){
List<NameValuePair>paramList=newArrayList<>();
for(Stringkey:param.keySet()){
paramList.add(newBasicNameValuePair(key,param.get(key)));
}
//模拟表单
UrlEncodedFormEntityentity=newUrlEncodedFormEntity(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(Exceptione){
e.printStackTrace();
}finally{
try{
response.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

returnresultString;
}

publicstaticStringdoPost(Stringurl){
returndoPost(url,null);
}

publicstaticStringdoPostJson(Stringurl,Stringjson){
//创建Httpclient对象
CloseableHttpClienthttpClient=HttpClients.createDefault();
CloseableHttpResponseresponse=null;
StringresultString="";
try{
//创建HttpPost请求
HttpPosthttpPost=newHttpPost(url);
//创建请求内容
StringEntityentity=newStringEntity(json,ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
//执行http请求
response=httpClient.execute(httpPost);
resultString=EntityUtils.toString(response.getEntity(),"utf-8");
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
response.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

returnresultString;
}
}

Ⅸ java 使用HttpURLConnection请求服务器,如果发送请求时没有问题,但返回结果时网络断了,如何处理

.setConnectTimeout() 指的是与请求网址的服务器建立连接的超时时间。
setReadTimeout() 指的是建立连接后如果指定时间内服务器没有返回数据的后超时。
503是错误码,能返回就说明服务器返回了response。超时指的是你指定的时间没有收到服务器的response。

不管哪种超时都不有状态码返回。因为返回是在response响应中的,而就是在设定的时间内没有收到响应,才会超时。如果出现超时的话会抛出一个异常。你可以catch超时异常,然后根据需要处理就行了。

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

比如要获取某页面, 那么需要分析, 是POST请求还是GET请求.

分析请求的标题头 ,参数 ,cookie等,

所以 , 分析页面请求, 才是关键, 分析好了, 直接按套路,设置标头, 设置参数, 设置cookie, 然后提交POST/GET就可以了

推荐win10自带的EDGE浏览器, 按F12弹出开发窗口, 里面详细记录了http请求

阅读全文

与javahttp请求网络设置相关的资料

热点内容
网络电视机顶盒的接口在哪里 浏览:83
移动网络智能模式怎么打开 浏览:451
三星手机注册不了网络 浏览:115
快递单网络录入员软件这个靠谱吗 浏览:623
能开网络共享的小米手机是最老板 浏览:216
苹果xr装电信卡网络不好 浏览:652
甘肃兰州移动网络电视 浏览:796
电信网络停机手机怎么缴费 浏览:993
如何防盗网络的应用 浏览:715
南京网格学院无线网络 浏览:361
不开数据网络锁屏没有信号 浏览:77
网络安全日是什么时候建设的 浏览:983
路由器网络迟钝 浏览:486
密码和网络安全答案 浏览:873
广电网络连接路由器老是断线 浏览:164
计算机网络复杂协议 浏览:908
家用光纤网络去哪里咨询缴费 浏览:315
家里无线网络用一会就断了 浏览:716
财务对网络安全的影响 浏览:420
网络营销推广怎么做有哪些方法 浏览:262

友情链接