Java HTTP响应查询

Java HTTP响应查询,java,http,url-rewriting,Java,Http,Url Rewriting,我的查询与我正在执行的一个实现有关 当HTTP请求从客户端端口发送到服务器端口时,我理解这一点 响应也被发送回同一端口(端口到端口通信) 在我的例子中,服务器将响应转发到带有查询字符串的URL,并将其转发到网络上的主机服务器。因此,当使用URLConnection对象的InputStream读取响应时,我得到的是与转发URL的登录页面相对应的HTML内容,没有查询字符串 我怀疑这是因为我们的主机服务器修改了URL 现在的问题是,在这个场景中,似乎有一个中间实体,它是URL转发到的主机服务器。因此

我的查询与我正在执行的一个实现有关

当HTTP请求从客户端端口发送到服务器端口时,我理解这一点 响应也被发送回同一端口(端口到端口通信)

在我的例子中,服务器将响应转发到带有查询字符串的URL,并将其转发到网络上的主机服务器。因此,当使用URLConnection对象的InputStream读取响应时,我得到的是与转发URL的登录页面相对应的HTML内容,没有查询字符串

我怀疑这是因为我们的主机服务器修改了URL

现在的问题是,在这个场景中,似乎有一个中间实体,它是URL转发到的主机服务器。因此,当我读回InputStream中的响应(服务器转发的URL)时,我不确定以下哪一个是实际发生的情况:

1.)直接从外部服务器读取响应(因为这是端口到端口的通信)

2.)从中间主机服务器收到的响应(视情况而定)

(如果第二种情况正确,中间主机服务器是否知道要将响应正确转发给哪个客户端?)


您将收到来自中间服务器的响应

听起来您的中间服务器就像一个()。当您向中间服务器发出请求时,它又向网络上的服务器发出请求(正如您所描述的)。但是,“真正的”服务器通常不知道请求是由您发起的。特别是,它不知道您的IP地址或发送请求的端口。它只知道中间(代理)服务器的IP地址和端口。另一方面,代理服务器仍然知道您发送请求的IP地址和端口


因此,您将请求发送到代理,代理将其发送到“真实”服务器,真实服务器将其响应发送回代理,代理将其发送回您。您和“真正的”服务器之间没有直接通信。

显示您的客户端代码。附加客户端代码。.响应仅为HTML页面内容。.答案很有帮助,但由于信誉不足,我无法投票。我有一个问题。获取i/p流后,我调用getURL()方法查找重定向的URL,以查找它们发送的查询字符串。但是,我得到的URL似乎是我的中间服务器发送的,因为它在主URL后面附加了会话id信息。有没有办法找出服务器发送的原始URL是什么。我是否需要在中间服务器上设置一个过滤器来拦截传入的url模式,这样我就可以访问ext.server发送的查询字符串。调用
getUrl()
仅返回创建
URLConnection
的url(请参阅)。您无法找到代理服务器从“真实”服务器请求的URL。但这正是代理的重点。从客户端的角度来看,代理服务器是真正的服务器。。。
URL url = new URL(httpsURL);
HttpsURLConnection urlConnection = (HttpsURLConnection) url
                .openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true); 
///
Omitting code for SSL
///
String urlParameters = "CCNumber=4111111111111111";
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();

BufferedReader in = new BufferedReader(new InputStreamReader(
                urlConnection.getInputStream()));
String inputLine;
if (urlConnection.getResponseCode() == HttpsURLConnection.HTTP_OK){

 while ((inputLine = in.readLine()) != null) {
  System.out.println(inputLine);
 }
}