0 0

JavaWeb通过代理访问Internet的例子,还有javamail通过代理发送邮件的例子10

我想要写好并测试通过的例子,在网上找了些资料但是不知道,是否正确
希望有正确源码的朋友,让我借鉴一下

问题补充:
suziwen 写道
  J2SE1.5也被称为J2SE5.0,在5.0以前的代理服务器设置挺不友好,现在,5.0提供了对通过代理服务器的更加灵活的控制,它可以对http,https,ftp,socks等分别设置,而且还可以设置不需要通过代理服务器的主机和地址。这和我们在IE、firefox中设置代理服务器类似。

  1.你可以在通过java -DXXXX=YYYY方式在程序启动时设置,你也可以在程序中将设置放入系统属性中,你也可以设置Proxy类,通过它来控制。

  2.可以通过ProxySelector来做自己的代理服务器的负载平衡等。

  import java.io.IOException; 
  import java.io.InputStream; 
  import java.net.InetSocketAddress; 
  import java.net.MalformedURLException; 
  import java.net.Proxy; 
  import java.net.ProxySelector; 
  import java.net.SocketAddress; 
  import java.net.URI; 
  import java.net.URISyntaxException; 
  import java.net.URL; 
  import java.net.URLConnection; 
  import java.util.List; 
  import java.util.Properties; 

  public class NetProxy 
  { 
  // 测试本地JVM的网络缺省配置 
  public void setLocalProxy() 
  { 
  Properties prop = System.getProperties(); 
  //设置http访问要使用的代理服务器的地址 
  prop.setProperty("http.proxyHost", "10.10.0.96"); 
  //设置http访问要使用的代理服务器的端口 
  prop.setProperty("http.proxyPort", "8080"); 
  //设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔 
  prop.setProperty("http.nonProxyHosts", "localhost|10.10.*"); 

  //设置安全访问使用的代理服务器地址与端口 
  //它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问 
  prop.setProperty("https.proxyHost", "10.10.0.96"); 
  prop.setProperty("https.proxyPort", "443"); 

  //使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机 
  prop.setProperty("ftp.proxyHost", "10.10.0.96"); 
  prop.setProperty("ftp.proxyPort", "2121"); 
  prop.setProperty("ftp.nonProxyHosts", "localhost|10.10.*"); 

  //socks代理服务器的地址与端口 
  prop.setProperty("socksProxyHost", "10.10.0.96"); 
  prop.setProperty("socksProxyPort", "1080"); 
  } 

  // 清除proxy设置 
  public void removeLocalProxy() 
  { 
  Properties prop = System.getProperties(); 
  prop.remove("http.proxyHost"); 
  prop.remove("http.proxyPort"); 
  prop.remove("http.nonProxyHosts"); 

  prop.remove("https.proxyHost"); 
  prop.remove("https.proxyPort"); 

  prop.remove("ftp.proxyHost"); 
  prop.remove("ftp.proxyPort"); 
  prop.remove("ftp.nonProxyHosts"); 

  prop.remove("socksProxyHost"); 
  prop.remove("socksProxyPort"); 
  } 

  // 

  // 测试http 
  public void showHttpProxy(Object... proxy) 
  { 
  URL url = null; 
  try 
  { 
  url = new URL("http://blog.csdn.com/smallnest"); 
  } 
  catch (MalformedURLException e) 
  { 
  return; 
  } 
  try 
  { 
  URLConnection conn = null; 
  switch (proxy.length) 
  { 
  case 0: 
  conn = url.openConnection(); 
  break; 
  case 1: 
  conn = url.openConnection((Proxy) proxy[0]); 
  break; 
  default: 
  break; 
  } 

  if (conn == null) 
  return; 

  conn.setConnectTimeout(3000); // 设置连接超时时间 
  InputStream in = conn.getInputStream(); 
  byte[] b = new byte[1024]; 
  try 
  { 
  while (in.read(b) > 0) 
  { 
  System.out.println(new String(b)); 
  } 
  } 
  catch (IOException e1) 
  { 
  } 
  } 
  catch (IOException e1) 
  { 
  e1.printStackTrace(); 
  } 

  } 

  // 测试ftp 
  public void showFtpProxy(Object... proxy) 
  { 
  URL url = null; 
  try 
  { 
  url = new URL("ftp://ftp.tsinghua.edu.cn"); 
  } 
  catch (MalformedURLException e) 
  { 
  return; 
  } 
  try 
  { 
  URLConnection conn = null; 
  switch (proxy.length) 
  { 
  case 0: 
  conn = url.openConnection(); 
  break; 
  case 1: 
  conn = url.openConnection((Proxy) proxy[0]); 
  break; 
  default: 
  break; 
  } 

  if (conn == null) 
  return; 

  conn.setConnectTimeout(3000); // 设置连接超时时间 
  InputStream in = conn.getInputStream(); 
  byte[] b = new byte[1024]; 
  try 
  { 
  while (in.read(b) > 0) 
  { 
  System.out.println(new String(b)); 
  } 
  } 
  catch (IOException e1) 
  { 
  } 
  } 
  catch (IOException e1) 
  { 
  e1.printStackTrace(); 
  } 

  } 

  // 得到一个proxy 
  public Proxy getProxy(Proxy.Type type, String host, int port) 
  { 
  SocketAddress addr = new InetSocketAddress(host,port); 
  Proxy typeProxy = new Proxy(type, addr); 
  return typeProxy; 
  } 

  public static void main(String[] args) 
  { 
  NetProxy proxy = new NetProxy(); 
  //测试代理服务器 
  proxy.setLocalProxy(); 
  proxy.showHttpProxy(); 

  //下面两行是清除系统属性,而通过Proxy类指定代理服务器 
  // proxy.removeLocalProxy 
  //proxy.showHttpProxy(proxy.getProxy(Proxy.Type.SOCKS,"10.10.0.96",1080)); 


  } 
  }

也就是说我只要在工程开始之前调用一个proxy类,并设置好代理的Ip个端口号
这个工程如果访问到外网,就会自动通过这个代理来访问对么?

2010年3月29日 11:06

4个答案 按时间排序 按投票排序

0 0

采纳的答案

  J2SE1.5也被称为J2SE5.0,在5.0以前的代理服务器设置挺不友好,现在,5.0提供了对通过代理服务器的更加灵活的控制,它可以对http,https,ftp,socks等分别设置,而且还可以设置不需要通过代理服务器的主机和地址。这和我们在IE、firefox中设置代理服务器类似。

  1.你可以在通过java -DXXXX=YYYY方式在程序启动时设置,你也可以在程序中将设置放入系统属性中,你也可以设置Proxy类,通过它来控制。

  2.可以通过ProxySelector来做自己的代理服务器的负载平衡等。


  import java.io.IOException; 
  import java.io.InputStream; 
  import java.net.InetSocketAddress; 
  import java.net.MalformedURLException; 
  import java.net.Proxy; 
  import java.net.ProxySelector; 
  import java.net.SocketAddress; 
  import java.net.URI; 
  import java.net.URISyntaxException; 
  import java.net.URL; 
  import java.net.URLConnection; 
  import java.util.List; 
  import java.util.Properties; 

  public class NetProxy 
  { 
  // 测试本地JVM的网络缺省配置 
  public void setLocalProxy() 
  { 
  Properties prop = System.getProperties(); 
  //设置http访问要使用的代理服务器的地址 
  prop.setProperty("http.proxyHost", "10.10.0.96"); 
  //设置http访问要使用的代理服务器的端口 
  prop.setProperty("http.proxyPort", "8080"); 
  //设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔 
  prop.setProperty("http.nonProxyHosts", "localhost|10.10.*"); 

  //设置安全访问使用的代理服务器地址与端口 
  //它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问 
  prop.setProperty("https.proxyHost", "10.10.0.96"); 
  prop.setProperty("https.proxyPort", "443"); 

  //使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机 
  prop.setProperty("ftp.proxyHost", "10.10.0.96"); 
  prop.setProperty("ftp.proxyPort", "2121"); 
  prop.setProperty("ftp.nonProxyHosts", "localhost|10.10.*"); 

  //socks代理服务器的地址与端口 
  prop.setProperty("socksProxyHost", "10.10.0.96"); 
  prop.setProperty("socksProxyPort", "1080"); 
  } 

  // 清除proxy设置 
  public void removeLocalProxy() 
  { 
  Properties prop = System.getProperties(); 
  prop.remove("http.proxyHost"); 
  prop.remove("http.proxyPort"); 
  prop.remove("http.nonProxyHosts"); 

  prop.remove("https.proxyHost"); 
  prop.remove("https.proxyPort"); 

  prop.remove("ftp.proxyHost"); 
  prop.remove("ftp.proxyPort"); 
  prop.remove("ftp.nonProxyHosts"); 

  prop.remove("socksProxyHost"); 
  prop.remove("socksProxyPort"); 
  } 

  // 

  // 测试http 
  public void showHttpProxy(Object... proxy) 
  { 
  URL url = null; 
  try 
  { 
  url = new URL("http://blog.csdn.com/smallnest"); 
  } 
  catch (MalformedURLException e) 
  { 
  return; 
  } 
  try 
  { 
  URLConnection conn = null; 
  switch (proxy.length) 
  { 
  case 0: 
  conn = url.openConnection(); 
  break; 
  case 1: 
  conn = url.openConnection((Proxy) proxy[0]); 
  break; 
  default: 
  break; 
  } 

  if (conn == null) 
  return; 

  conn.setConnectTimeout(3000); // 设置连接超时时间 
  InputStream in = conn.getInputStream(); 
  byte[] b = new byte[1024]; 
  try 
  { 
  while (in.read(b) > 0) 
  { 
  System.out.println(new String(b)); 
  } 
  } 
  catch (IOException e1) 
  { 
  } 
  } 
  catch (IOException e1) 
  { 
  e1.printStackTrace(); 
  } 

  } 

  // 测试ftp 
  public void showFtpProxy(Object... proxy) 
  { 
  URL url = null; 
  try 
  { 
  url = new URL("ftp://ftp.tsinghua.edu.cn"); 
  } 
  catch (MalformedURLException e) 
  { 
  return; 
  } 
  try 
  { 
  URLConnection conn = null; 
  switch (proxy.length) 
  { 
  case 0: 
  conn = url.openConnection(); 
  break; 
  case 1: 
  conn = url.openConnection((Proxy) proxy[0]); 
  break; 
  default: 
  break; 
  } 

  if (conn == null) 
  return; 

  conn.setConnectTimeout(3000); // 设置连接超时时间 
  InputStream in = conn.getInputStream(); 
  byte[] b = new byte[1024]; 
  try 
  { 
  while (in.read(b) > 0) 
  { 
  System.out.println(new String(b)); 
  } 
  } 
  catch (IOException e1) 
  { 
  } 
  } 
  catch (IOException e1) 
  { 
  e1.printStackTrace(); 
  } 

  } 

  // 得到一个proxy 
  public Proxy getProxy(Proxy.Type type, String host, int port) 
  { 
  SocketAddress addr = new InetSocketAddress(host,port); 
  Proxy typeProxy = new Proxy(type, addr); 
  return typeProxy; 
  } 

  public static void main(String[] args) 
  { 
  NetProxy proxy = new NetProxy(); 
  //测试代理服务器 
  proxy.setLocalProxy(); 
  proxy.showHttpProxy(); 

  //下面两行是清除系统属性,而通过Proxy类指定代理服务器 
  // proxy.removeLocalProxy 
  //proxy.showHttpProxy(proxy.getProxy(Proxy.Type.SOCKS,"10.10.0.96",1080)); 


  } 
  }

2010年3月29日 12:19
0 0

设置了代理,只要访问网络他就使用代理(不管内外网,因为他也不知道哪些是内网哪些是外网),你可以在需要使用代理的网络时,把代理打开,使用完后,再关闭代理。

2010年3月29日 13:09
0 0

也可以看看这几个链接

http://www.iteye.com/topic/503153

http://wtnhwbb.iteye.com/blog/154006

2010年3月29日 12:20
0 0

System.getProperties().setProperty("proxySet", "true"); //如果不设置,只要代理IP和代理端口正确,此项不设置也可以
  System.getProperties().setProperty("http.proxyHost", "218.26.204.66");
  System.getProperties().setProperty("http.proxyPort", "8080");

2010年3月29日 11:12

相关推荐

    JavaMail邮箱发送,activation.jar包

    在Java编程环境中,发送电子邮件是一项常见的任务,JavaMail API提供了这样的功能。然而,要实现完整的邮件发送功能,单纯依赖`javamail.jar`是不够的,还需要`activation.jar`包。这两个库一起工作,使Java应用程序...

    javaweb个人简单发送邮件封装包

    总的来说,这个"javaweb个人简单发送邮件封装包"简化了JavaWeb应用中发送邮件的过程,使得开发者无需深入了解JavaMail API的细节,就能快速实现邮件发送功能。只需正确配置SMTP服务器信息,就可以方便地通过程序发送...

    Java web中javamail邮件发送实现案例.docx

    在Java Web开发中,使用JavaMail API可以实现邮件的发送和接收功能。JavaMail是一个开源库,它提供了标准的API来处理SMTP(简单邮件传输协议)和其他邮件协议,使得开发者能够在应用程序中方便地发送和接收电子邮件...

    用javamail实现邮件发送-完整源码-之前的那个资源变成50分一次下载了,所以重新上传一个,让大家能下载

    2. 支持多种邮件协议,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议) 3. 处理邮件中的MIME(多用途互联网邮件扩展)内容,支持文本、图片、音频、视频等多种类型附件 4. 支持SSL和TLS...

    JavaWeb中JavaMail创建邮件和发送邮件

    JavaWeb中的JavaMail API是一个强大的库,用于在服务器端创建和发送电子邮件。本文将深入探讨如何使用JavaMail在JavaWeb应用程序中创建和发送邮件,基于MIME协议来处理复杂的邮件内容,如包含图片和附件。 首先,让...

    java邮件系统-javaweb项目

    Java邮件系统是一个基于Java Web技术构建的B/S(Browser/Server)架构的应用程序,它允许用户通过网页浏览器发送、接收和管理电子邮件。在本项目中,开发者利用了Java的强大力量,特别是对于网络通信和数据处理的...

    javaweb实现邮件发送所需jar包

    总结来说,`javaweb实现邮件发送所需jar包`包括`mail.jar`和`activation.jar`,它们是JavaMail API的重要组成部分,提供了发送邮件所需的所有功能。通过理解这两个库的工作原理和使用方法,开发者可以在Java Web应用...

    javaweb邮箱发送验证码功能实现

    在JavaWeb开发中,实现邮箱发送验证码功能是常见...总之,JavaWeb中实现邮箱发送验证码功能涉及到配置邮件服务、使用JavaMail API发送邮件以及可能的验证码管理逻辑。确保正确配置并理解这些步骤,就能顺利实现该功能。

    JAVAWEB照相带完整例子

    "JAVAWEB照相带完整例子"是一个实际项目案例,它展示了如何在JavaWeb环境中集成摄像头功能,让用户能够通过网页进行拍照并进行相关处理。这个例子包含了前端用户界面以及后端服务器的交互逻辑。 首先,`webcam.jsp`...

    代理商管理系统(javaweb)

    JavaWeb应用通常部署在Tomcat、Jetty等应用服务器上,通过配置服务器的context path,将系统暴露在指定的URL下供用户访问。 总结,JavaWeb技术在代理商管理系统中的应用涵盖了后端业务处理、前端展示、数据库交互等...

    javamail写的邮件

    JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。它提供了丰富的 API,可以处理 SMTP、POP3、IMAP 协议,以及 MIME 消息的创建和解析。JavaMail 允许开发者轻松地实现邮件服务器的...

    javaweb用户验证码登录session例子

    在Java Web开发中,用户登录验证是不可或缺的一部分,而在这个"javaweb用户验证码登录session例子"中,我们将深入探讨如何结合验证码、用户密码以及Session技术来实现安全的登录过程。Session是Web应用中用于跟踪...

    javaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+答辩PPT)(可做课程设计).rar

    javaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+任务书+外文翻译+文献综述+答辩PPT)(可做课程设计).rarjavaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+任务书+外文翻译+文献综述+...

    javaweb页面的一些例子

    JavaWeb页面开发是Web开发中的一个重要...总的来说,通过这些例子,你不仅可以提升编程技能,还能增强对Web开发流程的理解,从而更好地应对实际项目的需求。不断地练习和探索,将助你在JavaWeb开发的道路上不断进步。

    JavaWeb实现邮件发送功能

    1. JavaMail API:这是一个用于发送电子邮件的Java API,可以让开发者无需关心底层的SMTP协议细节,通过编程接口来发送邮件。在JavaMail API中,MimeMessage是构造邮件消息的主要对象,它包含了邮件的基本元素,例如...

    2016年javaWeb学习SSH注解整合例子demo

    【SSH框架整合与JavaWeb开发】 SSH(Struts2、Spring、Hibernate)是JavaWeb开发中的经典组合,常用于构建企业级应用。本教程将详细讲解2016年SSH框架整合时使用注解的方式,以提高开发效率并降低配置复杂度。 1. ...

    javaweb通过串口和单片机进行通信.zip

    通过这个API,JavaWeb应用可以打开串口,设置波特率、数据位、停止位等通信参数,然后发送和接收数据。对于单片机来说,它需要配置相应的串口接口,以便于接收和响应来自JavaWeb的命令。 在实际应用中,安全性也是...

    基于安卓的音频播放器基于安卓的音频播放器javafx2.0官方例子JavaMAIL1.6JavaMAIL1.6anylogic

    JavaFX Script编程语言(以下称为JavaFX)是Sun微...JavaMail是实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的...

    javaweb实现的邮件收发系统(含数据库).zip

    首先,邮件系统的实现基于JavaMail API,这是一个广泛使用的Java库,用于处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件协议。开发者通过JavaMail API可以方便地创建、发送、...

    javaweb 发送邮件

    总之,通过JavaMail API和Apache Commons Email,Java Web开发者可以方便地实现邮件发送功能,进行有效的用户沟通和系统通知。理解这些知识点对于Java Web开发是非常重要的,能帮助开发者构建更加完善的后台服务。

Global site tag (gtag.js) - Google Analytics