基于HTTP协议的网络编程(java)
1.我们知道服务器端和客户端之间的信息交互,首先需要请求,那么基于HTTP协议的网络编程与基本的网络编程有什么区别呢?
将请求部分更加地细化,请求的内容需要加上HTTP规定的有关信息。
2.现在我们讨论的是基于HTTP协议的网络编程,那么服务器端我们就不写了,因为事情变得更加复杂了,我们需要在服务器端写入一篇超文本文件,然后对客户端客户端的请求做出处理。我们直接下载tomcat容器来帮助我们完成响应就行了。
3.在webapp下面建立一个html文件
4.
1 import java.net.Socket; 2 import java.net.InetAddress; 3 import java.io.*; 4 import java.net.UnknownHostException; 5 import java.io.IOException; 6 public class Client{ 7 public static void main (String[] args){ 8 9 10 11 try{ 12 Socket s=new Socket( "125.220.197.237", 8080); //主机ip 13 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 14 bw.write("OPTIONS / HTTP/1.1"); 15 bw.newLine(); 16 bw.write("Host:125.220.197.237 :80"); 17 bw.newLine(); 18 bw.write("Content-Type: text/html"); 19 bw.newLine(); 20 bw.newLine(); 21 bw.flush(); 22 BufferedReader br = new BufferedReader(new InputStreamReader 23 24 (s.getInputStream())); 25 String str = null; 26 while((str = br.readLine()) != null) { 27 System.out.println(str); 28 } 29 bw.close(); 30 br.close(); 31 s.close(); 32 }catch(IOException e){} 33 34 35 36 37 38 39 40 } 41 42 43 44 }
5.如果请求部分写错,会报这些错误
- [http-nio-8080-exec-5] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
- Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
- java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
6.如果你发现这样的情况,什么都不显示,很明显,你没有跟服务器端连接。那么或许你的ip地址跟本机的ip地址不一样(计算机在联网和不联网的情况下ip地址可能不一样)
7.最终结果