在Java

时间:2015-07-27 13:00:01

标签: java http client

我正在研究java中的一个项目,该项目包括使用以下场景通过http协议连接两个代理:

1) http-agent1 make connection to http-agent 2 
2)  http-agent 2 send a GET-Request to  http-agent 1
3) http-agent 1 sends the asked resource to  http-agent 2 
4)  http-agent 1 stops the connection

我可以按照http规范吗? 我有点困惑,因为我知道只有一个代理必须是一个监听器,根据那个场景,我不知道,哪个Agent必须是一个监听器。

我正在使用java-socket。所以很难将连接和发出请求分开。!!!!!!!!!!!根据http协议,正在提出请求的代理也应该建立连接

2 个答案:

答案 0 :(得分:0)

当然你可以使用http。但术语"用户代理"仅指客户端,在所描述的场景中" http-agent 1"是一个服务器," http-agent 2"发送请求。

在这里,您可以阅读http协议:Hypertext Transfer Protocol (HTTP/1.1)术语在2.1节中列出

我不记得了,但我认为http服务器和客户端都有一个类。

编辑:

好的,标准链接描述了http协议,应该使用套接字来实现。通常是TCP套接字。

爪哇:

(服务器)

    ServerSocket serverSocket = new ServerSocket(portNumber);
    Socket clientSocket = serverSocket.accept();

(客户端)

   Socket socket = new Socket(hostName, portNumber);
   PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
   BufferedReader in = new BufferedReader(
       new InputStreamReader(socket.getInputStream()));

客户端和服务器都有一个Socket,但是服务器等待客户端想要建立连接并开始交换消息。

http协议描述了按摩的类型,用于通信的顺序和协议。也许你应该从阅读关于Oracle java有tutorial

的套接字开始

答案 1 :(得分:0)

HTTP通常用于客户端/服务器通信,您的示例并非如此。在您的情况下,您基本上有以下内容:

A connects to B
B requests from A
A sends to B
A closes connection with B

基本上,B的作用类似于服务器(等待连接)和客户端(请求数据),但部分服务器功能也由A(实际服务数据)处理。您尝试执行的典型客户端 - 服务器版本将如此:

B connects to A
B requests from A
A sends to B
A or B initiate the disconnect

然而,HTTP只是一种通信协议,因此没有理由HTTP不能为您的示例工作。它不是一个非常标准的用法,所以很多框架都不能构建,以适应你正在构建的交换模式。构建自己的代码来完成你正在使用的代码并不是很困难。您可能想要查看Java HttpURLConnection