目前网络上最流行的协议就是HTTP协议。HTTP协议有许多优点,例如它能够穿越防火墙。同时HTTP也是很多其他协议的基础,例如SOAP协议就是建立在HTTP协议之上的。
Java通过两种API对HTTP提供支持,一种是servlet
API,它覆盖了服务器端的编程问题;另一种是java.net包,它通过HttpURLConnection类在客户端提供了对HTTP协议的支持。但
是我在使用servlet API的时候曾经遇到过一些问题。本文将介绍我曾遇到过的一些问题和相应的解决办法。
基础知识
通常在企业网络中,一个终端通过代理服务器同互联网连接起来,代理服务器负责监视网络流量和
执行安全规则。在java.net
API中,软件可以通过两个属性来支持代理服务器,它们分别是http.proxyHost和http.proxyPort。它们必须被设定为相应的代理
服务器和端口,下面的代码展示了如何设定这两个属性:
String url = "http://www.digitalcq.com/",
proxy = "proxy.digitalcq.com",
port = "8080";
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (
HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);
使用验证
通常公司会要求员工在连接到互联网之前登录到代理服务器。通过登录这种机制使公司可以更好的
监控员工对互联网的使用,例如监控员工都访问了哪些网站。HttpURLConnection通过验证类支持代理服务器验证。下面是一个如何利用
HttpURLConnection类进行验证的例子。首先需要实现一个验证者:
public class SimpleAuthenticator
extends Authenticator
{
private String username,
password;
public SimpleAuthenticator(String username,String password)
{
this.username = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(
username,password.toCharArray());
}
}
然后,通过Authenticator.setDefault()方法注册验证者:
String url = "http://www.digitalcq.com/",
proxy = "proxy.digitalcq.com",
port = "8080",
username = "usr",
password = "pwd";
Authenticator.setDefault(new SimpleAuthenticator(
username,password));
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (
HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);
分享到:
相关推荐
在Java中,我们可以利用Java的Socket编程和HttpURLConnection类来创建代理服务器。以下是创建代理服务器的主要步骤: 1. **建立Socket连接**: 首先,我们需要创建一个ServerSocket监听客户端的连接请求。当有新的...
【简单HTTP代理服务器】是一种网络通信工具,它允许用户通过该服务器作为中介,与互联网上的其他服务器进行交互。这样的设计可以用于多种目的,包括隐私保护、网络访问控制、负载均衡等。在这里,我们讨论的是一个自...
Java代理服务器程序是一种用于转发网络请求的应用,它在客户端与目标服务器之间起到中介的作用。这样的设计使得用户可以通过代理服务器访问互联网,从而实现多种功能,如匿名浏览、负载均衡、缓存优化、网络监控等。...
Java的HttpURLConnection和HttpClient类可以方便地处理HTTP请求和响应,但可能需要自定义逻辑来适应代理服务器的特定需求,比如转发请求、修改请求头或响应头、处理HTTPS代理等。 接下来,代理服务器还需要考虑缓存...
HTTP代理服务器是网络通信中的一种常见机制,它作为客户端与目标服务器之间的中介,允许用户通过代理服务器访问互联网上的资源。这种设置在多个场景下都非常有用,例如匿名浏览、网络安全管理和性能优化等。在这个...
3. **请求解析与转发**:当收到客户端的HTTP请求时,代理服务器需要解析请求的各个部分,如URL、方法、头信息等。然后,它根据这些信息构造新的请求,向目标服务器发起。转发请求时可能需要修改某些头字段,例如...
在Android开发中,联网请求是应用与服务器交互的基础,用于获取或发送数据。常见的联网请求方式有两种:HttpURLConnection和HttpClient。下面将详细讲解这两种方法,以及它们如何处理POST和GET请求。 **...
本篇主要探讨如何在Android中解析服务器返回的XML代码。 首先,我们需要建立与服务器的连接来获取XML数据。在提供的代码中,`openConn(String path)` 方法用于打开与指定URL的连接并返回一个`InputStream`,这是...
1. **代理原理**:代理服务器作为客户端与目标服务器之间的中介,接收客户端的请求,然后转发给目标服务器,再将服务器的响应返回给客户端。自定义真实代理在此基础上,可以增加更多定制化的功能,如过滤请求、缓存...
在Android开发中,HTTP通信是应用与服务器交互的重要方式,特别是在获取远程数据或者进行网络请求时。本资源提供了Android HTTP通信的示例代码,帮助开发者理解如何在Android应用中实现HTTP请求。同时,还附带了...
- **网络请求库**:在Android客户端中,通常会使用像`HttpURLConnection`、`Volley`、`OkHttp`或`Retrofit`这样的网络请求库来与服务器通信。这些库简化了HTTP请求的处理,使得数据的发送和接收更加便捷。 - **...
5. **使用代理**:在Java的HTTP请求中,可以设置Proxy对象,将代理IP和端口作为参数,使请求通过代理服务器转发,从而达到突破IP限制的目的。 在实际项目中,可能还需要考虑其他因素,如验证码识别、登录验证、请求...
传统的HTTP代理服务器工作流程包括:监听客户端连接请求、解析处理HTTP请求包、与目标Web服务器建立连接、转发请求及响应。这种方式通常需要用户手动配置浏览器设置,对于非专业用户来说存在一定的使用门槛。此外,...
HTTP代理(httpProxy)是一种网络服务,它充当客户端与服务器之间的中介,允许客户端通过代理服务器来访问其他Web资源。在Java开发中,实现HTTP代理功能可以帮助我们处理各种网络请求,提高性能,以及实现数据抓取、...
在处理返回数据时,Web服务器通常需要与应用程序或后端服务协作。例如,对于一个动态请求,服务器可能需要调用PHP脚本或Java应用服务器来生成响应。这涉及到CGI(通用网关接口)或FastCGI协议,或者更现代的如WSGI...
在IT行业中,网络编程是不可或缺的一部分,特别是在移动应用和服务器端开发中。本文将深入探讨“Netroid框架”和“HttpURLConnection类”的使用,并通过一个文件下载的示例来阐述如何利用它们进行文件传输,同时关注...
它是一个基于请求与响应模式的、无状态的、应用层的协议,并通过TCP/IP来传递数据。在本示例中,我们将探讨如何进行一个简单的HTTP解析,以便从指定的URL获取网页信息。 首先,我们要理解HTTP请求的基本结构。一个...
通过这种方式,代理服务器可以提高性能(通过缓存重复请求的内容)、提供匿名浏览、过滤网络内容、限制访问特定网站,甚至实现负载均衡。 在"hyk-proxy"项目中,我们可以推测它利用了Java的Socket编程来建立和管理...
在Java中,可以使用JAX-WS的`javax.xml.ws.Service`类来生成客户端代理,该代理提供了与服务交互的方法。 2. wsimport工具:JDK自带的命令行工具,可以将WSDL文件转换为Java客户端源码,自动生成所需的客户端类和...