如何通过代理访问internet资源?

03-02-19 wjr

to Banq:

有一事请教,我在做我们产品的在线升级时,当时只做两种测试,即在我们局域内访问我们的产品支持服务器和外边电话拔号访问我们的产品支持服务器,却忘了做最为常用的外边客户在局域网通过代理服务器访问我们的产品支持服务器的第三种情况。

当时对第三种情况的处理是:

......

//我们的产品支持服务器地址

String sUrl = "http://211.155.252.0.5/update.zip";

//在客户设置代理服务器

java.util.Properties prop = System.getProperties();

prop.put("http.proxyHost","192.168.0.5");

prop.put("http.proxyPort","8080");

//访问我们服务器

java.net.URL url = new URL(sUrl);

java.net.URLConnection urlc = url.openConnection();

//如有必要设用户密码

String usernamepassword=username+":"+password;

String encoding = new sun.misc.BASE64Encoder().encode (usernamepassword.getBytes());

urlc.setRequestProperty ("Authorization", "Basic " + encoding);

//取得流

InputStream is = urlc.getInputStream();

........

编程的时候没做测试。后来到客户那通不过。

不知道还需要做什么处理?

sx

banq
2003-02-19 11:04

我在 J2EE到底是什么文章里也提到,对于客户端需要穿过代理服务器才能访问到服务器的应用时,最为明智和保险的做法是使用Http协议,使用servlet/jsp技术。

banq
2003-02-19 11:08

补充,看了你的代码,你是通过http提供服务的,理论上,你只需要提供一个可访问http的客户端就可以了,其它不属于你的应用程序问题,我觉得你的客户端没必要做那么复杂,你为什么不让你的客户使用浏览器使用你的服务?那才体现是B/s系统优点:客户端维护支持工作量小。

wjr
2003-02-19 11:42

>>你为什么不让你的客户使用浏览器使用你的服务?

原先我曾这样设计,但后来我又推翻了,原因如下:

如果这样的话,有以下几个问题

1.用小程序(applet),放我们网上,则用户需要设IE的安全设置,同时要指定下载路径,尽管是一个很简单的动作,但对用户来说确是一个非常难的事,中国用户水平现在就这样,不可强求。

2。下载完升级软件,还是要在服务器本地运行升级程序,(数据库更新,文件解压替换,而此时产品应用服务器必需是停止)分这两步,对用户来说,也是增加了难度,以前我没有去过客户那里,不知道他们有多难,后来去了几个用户才知道,什么是C:盘?什么是目录都不知道,所以我觉得,我们做产品必须是非常的傻瓜,才能推行,(这大概是MS普及的一个原因吧)。

3.如果对每个用户都要跟他解释很多则工作量很大,,(我们用户较多),我们公司支持人员撑不住的。

所以当我能提供一个可访问http的客户端,其他问题全免了,用户将是非常傻瓜的使用。