-
java代码发送http请求时DnsResolver使用问题
2016-05-20 19:45:05http请求中,会用到DnsResolver,有两种方式,一种是用默认的,一种是自定义一个 ...此时,会从运行代码的机器的host文件以及一些其他的方式来解析http请求中的目标服务器(域名) 2. 自定义一个Dnshttp请求中,会用到DnsResolver,有两种方式,一种是用默认的,一种是自定义一个
1. 采用默认DnsResolver
代码创建方式如下
DnsResolver dnsResolver = new SystemDefaultDnsResolver()
此时,会从运行代码的机器的host文件以及一些其他的方式来解析http请求中的目标服务器(域名)2. 自定义一个DnsResolver
代码创建方式如下
private static DnsResolver getDnsResolver() { InMemoryDnsResolver dnsResolver = new InMemoryDnsResolver(); try { dnsResolver.add("dev4.xx.xx.com", Inet4Address.getByName("10.134.1.1")); dnsResolver.add("beta154.zz.zz.com", Inet4Address.getByName("14.10.4.4")); dnsResolver.add("baike.baidu.com", Inet4Address.getByName("59.37.109.6")); } catch (Exception e) { e.printStackTrace(); } return dnsResolver; }
-
java http xml请求_Java中的XML请求/响应
2021-02-27 21:05:07但我会要求你使用以下API ...JAXP和JAXBCastor- 下面的代码片段方法接受Web服务器的url和xmlQuery- 我使用了NameValuePair来发送XML请求- 请用Http客户端替换MySSLSocketFactory.getNewHttpClient();,我使用它需要...好吧,我有你想要的......但我会要求你使用以下API ...
JAXP和JAXB
Castor
- 下面的代码片段方法接受Web服务器的url和xmlQuery
- 我使用了NameValuePair来发送XML请求
- 请用Http客户端替换MySSLSocketFactory.getNewHttpClient();,我使用它需要自定义证书才能访问此站点。
以下是我的Project中的代码,它发送XML req并获取XML resp:
public String postData(String url, String xmlQuery) {
final String urlStr = url;
final String xmlStr = xmlQuery;
final StringBuilder sb = new StringBuilder();
Thread t1 = new Thread(new Runnable() {
public void run() {
HttpClient httpclient = MySSLSocketFactory.getNewHttpClient();
HttpPost httppost = new HttpPost(urlStr);
try {
List nameValuePairs = new ArrayList(
1);
nameValuePairs.add(new BasicNameValuePair("xml", xmlStr));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
Log.d("Vivek", response.toString());
HttpEntity entity = response.getEntity();
InputStream i = entity.getContent();
Log.d("Vivek", i.toString());
InputStreamReader isr = new InputStreamReader(i);
BufferedReader br = new BufferedReader(isr);
String s = null;
while ((s = br.readLine()) != null) {
Log.d("YumZing", s);
sb.append(s);
}
Log.d("Check Now", sb + "");
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Getting from Post Data Method " + sb.toString());
return sb.toString();
}
-
-
java socket 浏览器_java Socket Tcp 浏览器和服务器(一)
2021-02-25 19:01:36发送的请求是:GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 http协议版本。请求消息头 . 属性名:属性值Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockw...自定义服务端,
使用已有的客户端IE,了解一下客户端给服务端发了什么请求?
发送的请求是:
GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 http协议版本。
请求消息头 . 属性名:属性值
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,
application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept: */*
Accept-Language: zh-cn,zu;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: 192.168.1.100:9090
//Host: www.huyouni.com:9090
Connection: Keep-Alive
//空行
//请求体。
//服务端发回应答消息。
HTTP/1.1 200 OK //应答行,http的协议版本 应答状态码 应答状态描述信息
应答消息属性信息。 属性名:属性值
Server: Apache-Coyote/1.1
ETag: W/"199-1323480176984"
Last-Modified: Sat, 10 Dec 2011 01:22:56 GMT
Content-Type: text/html
Content-Length: 199
Date: Fri, 11 May 2012 07:51:39 GMT
Connection: close
//空行
//应答体。
这是我的网页欢迎光临
这是一个tomcat服务器中的资源。是一个html网页。
网络结构,
1,C/S client/server
特点:
该结构的软件,客户端和服务端都需要编写。
可发成本较高,维护较为麻烦。
好处:
客户端在本地可以分担一部分运算。
2,B/S browser/server
特点:
该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。
开发成本相对低,维护更为简单。
缺点:所有运算都要在服务端完成。
-
-
java网络编程客户端与服务端原理以及用URL解析HTTP协议
2017-11-13 12:54:29常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,... 自定义一个服务端,使用自己已有的客户端IE浏览器,了解一下客户端都发送了什么请求。 1 pac常见客户端与服务端
客户端:
浏览器:IE
服务端:
服务器:web服务器(Tomcat),存储服务器,数据库服务器。
(注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb,下面有一个文件1.html)
服务端原理
自定义一个服务端,使用自己已有的客户端IE浏览器,了解一下客户端都发送了什么请求。
1 package cn.ie_server; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.PrintWriter; 6 import java.net.InetSocketAddress; 7 import java.net.ServerSocket; 8 import java.net.Socket; 9 10 import cn.InetAdress.demo.InetAddressDemo2; 11 12 public class MyTomcat { 13 14 public static void main(String[] args) throws IOException { 15 //建立服务端的socket连接,监听9090端口 16 ServerSocket ss=new ServerSocket(9090); 17 //接收客户端发来的消息 18 Socket s=ss.accept(); 19 20 System.out.println(s.getInetAddress().getHostAddress()); 21 22 //获取客户端发送过来的请求 23 InputStream in=s.getInputStream(); 24 25 byte [] buf=new byte[1024]; 26 27 int len=in.read(buf); 28 29 String text=new String(buf,0,len,"utf-8"); 30 31 System.out.println(text); 32 //向客户端发送一些数据 33 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 34 out.println("<font color='red' size='7'>欢迎光临</font>"); 35 s.close(); 36 ss.close(); 37 } 38 }
发送过来的请求是:
GET / HTTP/1.1 (请求行: 请求方式 请求资源路径/myweb/1.html http协议版本)
(请求消息头,属性名:属性值 )
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
(支持的压缩方式)
Accept-Encoding: gzip, deflate
Host: 127.0.0.1:9090
Connection: Keep-Alive8注意:这此时开放端口后可能会连不上服务端出现以下情况
此时可以试一下将ip换成127.0.0.1 这个回送地址,因为如果在校园会出现访问限制的情况
客户端原理
服务端给客户端的应答消息,模拟一个Tomcat服务端发送符合http协议的请求消息
1 package cn.ie_server; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.ObjectInputStream.GetField; 6 import java.io.PrintWriter; 7 import java.net.Socket; 8 import java.net.UnknownHostException; 9 10 public class MyBrowser { 11 12 /** 13 * @param args 14 * @throws IOException 15 * @throws UnknownHostException 16 */ 17 public static void main(String[] args) throws UnknownHostException, IOException { 18 Socket s=new Socket("192.168.1.127",8080); 19 20 //模拟浏览器给tomcat服务端发送符合http协议的请求消息 21 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 22 out.println("GET /docs/aio.html HTTP/1.1"); 23 out.println("Accept: */*"); 24 out.println("Host: 192.168.1.127:8080"); 25 out.println("Connection:close"); 26 out.println(); 27 out.println(); 28 29 InputStream in=s.getInputStream(); 30 byte[] buf=new byte[1024]; 31 int len=in.read(buf); 32 33 String str=new String(buf,0,len); 34 System.out.println(str); 35 36 s.close(); 37 38 } 39 40 }
服务端返回的应答消息为:
(应答行 应答状态码 应答状态行描述信息)
HTTP/1.1 200 OK
(应答消息属性 属性名:属性值 )
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"24874-1465990848000"
Last-Modified: Wed, 15 Jun 2016 11:40:48 GMT//最后修改时间
Content-Type: text/html
Content-Length: 24874
Date: Mon, 04 Jul 2016 14:54:43 GMT
Connection: close
//空行
//应答体<html>
<head>
<title>这是我的网页</title>
</head>
<body>
<h1>欢迎光临</h1>
<font size='5' color="red">这是一个Tomcat服务器中的资源。这是一个html网页。</font>
</body>
</html>注意:通常我们找不到网页,会出现404的应答状态码,而成功的话会返回200的应答状态码。
大家可以看到服务端返回的消息中有“应答行 应答状态码 应答状态行描述信息”等等一系列信息,但为什么在浏览器中只有我们看到的普通网页呢,这是因为浏览器进行了解析,但是怎么解析呢?只是就用到了URL这个类。
1 package cn.ie_server; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 import java.net.MalformedURLException; 7 import java.net.URL; 8 import java.net.URLConnection; 9 10 public class URLDemo { 11 12 /** 13 * @param args 14 * @throws IOException 15 */ 16 public static void main(String[] args) throws IOException { 17 String str_url="http://127.0.0.1:8080/myweb/1.html?name=zhangsan"; 18 19 URL url=new URL(str_url); 20 InputStream in=url.openStream(); 21 byte[]buf=new byte[1024]; 22 int len =in.read(buf); 23 String text=new String(buf ,0,len); 24 System.out.println(text); 25 in.close(); 26 } 27 28 }
整理的有些粗糙,大家多提一下建议哈。
-
-
java http 客户端 服务端_java网络编程客户端与服务端原理以及用URL解析HTTP协议...
2021-02-27 21:05:58(注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb,下面有一个文件1.html)服务端原理自定义一个服务端,使用自己已有的客户端IE浏览器,了解一下客户端都发送了什么请求。1 packagecn.ie_server;23 ... -
java Socket Tcp 浏览器和服务器(一)
2013-11-26 11:45:00自定义服务端,使用已有的客户端IE,了解一下客户端给服务端发了什么请求? 发送的请求是: GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 http协议版本。请求消息头 . 属性名:属性值Accept: ... -
java源码包---java 源码 大量 实例
2013-04-18 23:15:26当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新... -
java 客户端和服务端_Java网络编程(客户端和服务端原理)
2021-02-27 12:25:50运行下面的程序,浏览器端输入自己主机的IP地址+端口号(8888),会看到服务器返回的数据内容,Eclipse控制台会打印显示收到的信息,通过我们自定义的服务器,可以看到浏览器端向服务器发送的请求信息的格式是:请求行.... -
java源码包2
2013-04-20 11:28:17当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新... -
Java网络编程
2019-01-21 14:56:38略,待补 最常见的客户端: 浏览器 :IE。...发送的请求是: GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 http协议版本。 请求消息头 . 属性名:属性值 Accept: image/gif, i... -
java源码包3
2013-04-20 11:30:13当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新... -
java源码包4
2013-04-20 11:31:44当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新... -
JAVA中的Servlet
2020-08-05 20:46:38处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,知道B/S模式(浏览器/服务器)。 延伸: C/S模式(客户端/... -
JAVA上百实例源码以及开源项目
2016-01-03 17:37:40当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新... -
java会话机制_会话跟踪机制 - Java Servlet 3.1 规范
2021-03-10 05:42:12容器向客户端发送一个 cookie,客户端后续到服务器的请求都将返回该cookie,明确地将请求与会话关联。会话跟踪 cookie 的标准名字必须是JSESSIONID。容器也允许通过容器指定的配置自定义会话跟踪cookie的名字。所有 ... -
Java网络编程(客户端和服务端原理)
2016-03-27 20:40:00通过我们自定义的服务器,可以看到浏览器端向服务器发送的请求信息的格式是: 请求行.......GET / HTTP/1.1 请求方式 /myweb/1.html 请求的资源路径 http协议版本。请求消息头 . 属性名:属性值 ec... -
java开源包1
2013-06-28 09:14:34Smart Cache 是一个采用 Java 开发的 HTTP/1.1代理服务器,也可以用来作为Web的缓存系统。 高性能的JSON处理 Jackson Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash ... -
java开源包12
2013-06-28 10:14:45Smart Cache 是一个采用 Java 开发的 HTTP/1.1代理服务器,也可以用来作为Web的缓存系统。 高性能的JSON处理 Jackson Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash ... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:4221个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持... -
Java资源包01
2016-08-31 09:16:25Smart Cache 是一个采用 Java 开发的 HTTP/1.1代理服务器,也可以用来作为Web的缓存系统。 高性能的JSON处理 Jackson Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash ... -
servlet获取不到表单数据_JAVA WEB教程之一(何为servlet)
2020-11-26 11:56:43Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet 执行以下主要任务:读取客户端(浏览器)发送的... -
java开源包101
2016-07-13 10:11:08Smart Cache 是一个采用 Java 开发的 HTTP/1.1代理服务器,也可以用来作为Web的缓存系统。 高性能的JSON处理 Jackson Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash ... -
Spring Boot :Spring Boot 可以轻松创建独立的生产级基于 Spring 的应用程序,内置 web 服务器让你可以像运行普通 Java 程序一样运行项目。另外,大部分 Spring Boot 项目只需要少量的配置即可,这有别于 Spring 的...
-
java开源包11
2013-06-28 10:10:38Smart Cache 是一个采用 Java 开发的 HTTP/1.1代理服务器,也可以用来作为Web的缓存系统。 高性能的JSON处理 Jackson Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash ...