⑴ 怎么用javamail 通过http代理发邮件

代码如下:
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class EmailTest {

public static void main(String[] args) throws Exception{

Properties props = new Properties();

props.setProperty("mail.smtp.auth", "true");

props.setProperty("mail.transport.protocol", "smtp");

props.setProperty("mail.host", "smtp.163.com");

Session session = Session.getInstance(props,

new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication("xxx","xxx");//这里分别填写发送email的用户名、密码

}

}

);

session.setDebug(true);

Message msg = new MimeMessage(session);

msg.setFrom(new InternetAddress("xxx"));//这里是发送方的email地址如:[email protected]

msg.setSubject("test javamail");

msg.setRecipients(RecipientType.TO,

InternetAddress.parse("xxx"));//这里是接收方的email地址如:[email protected]

msg.setContent("谷歌","text/html;charset=gb2312");

Transport.send(msg);

}
}

⑵ java实现http请求代理

可以看看·commons-httpClient ·
或许会有帮助··

⑶ httpclient代理有什么作用,或者说代理的目的是什么。请高人指点,给我一个java代码示例。万分感谢。

参见apache官方文档 http://hc.apache.org/httpcomponents-client-ga/examples.html

DefaultHttpClient httpclient = new DefaultHttpClient();
try {
httpclient.getCredentialsProvider().setCredentials(
new AuthScope("localhost", 8080),
new UsernamePasswordCredentials("username", "password"));

HttpHost targetHost = new HttpHost("www.verisign.com", 443, "https");
HttpHost proxy = new HttpHost("localhost", 8080);

httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

HttpGet httpget = new HttpGet("/");

。。。。

} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}

⑷ 想用java编写个代理服务器,求具体一些思路,详细一些,谢谢

在编写代理服务器之前,首先应该明白一点,Java的代理机制,如图所示:

那么Java就处于中间这层代理服务器,代理服务器所作的事情如下:
1、接收客户端请求,进行处理,然后发送给服务端
2、接收服务端响应,进行处理,然后发送给客户端
这样,就更清晰了,Java提供了代理的API为,java.net.Proxy类。此类表示代理设置,通常为类型(http、socks)和套接字地址。Proxy 是不可变对象。

也就是说Java可以制作高级协议的代理,如 HTTP 或 FTP。也可以制作SOCKS(V4 或 V5)代理。
首先,使用到了URL类,HttpURLConnection类及其我们的代理类Proxy类。他们都位于java.net包中。

第一步:生成代理,指定端口为8888:

第二步:使用URLConnection类进行连接www.moonsos.com

第三步:打开URL,并且读取HTML源码

⑸ java httpclient4.1.2 怎么使用免费的https代理

DefaultHttpClient httpclient = new DefaultHttpClient();
String proxyIp=xxx.xxx.xxx.xxx;
int port=xxxx;
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,new HttpHost(proxyIp,port));

这样设置就可以回了答

⑹ java使用代理访问网络的几种方法

使用Proxy来对每个连接实现代理, 这种方法只能在jdk 1.5以上的版本使用(包含jdk1.5), 优点是可以单独的设置每个连接的代理, 缺点是设置比较麻烦:
public static void main(String[] args) {
try {
URL url = new URL("http://www..com");
// 创建代理服务器
InetSocketAddress addr = new InetSocketAddress("192.168.0.254",
8080);
// Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); // Socket 代理
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理
// 如果我们知道代理server的名字, 可以直接使用
// 结束
URLConnection conn = url.openConnection(proxy);
InputStream in = conn.getInputStream();
// InputStream in = url.openStream();
String s = IOUtils.toString(in);
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
不是很详细, 有什么问题还望大家指正

⑺ java 访问不到本地的proxy

这个是 apache httpclient 的代码
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope("localhost", 8080),
new UsernamePasswordCredentials("username", "password"));
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider).build();
try {
HttpHost target = new HttpHost("www.verisign.com", 443, "https");
HttpHost proxy = new HttpHost("localhost", 8080);

RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
HttpGet httpget = new HttpGet("/");
httpget.setConfig(config);

System.out.println("Executing request " + httpget.getRequestLine() + " to " + target + " via " + proxy);

CloseableHttpResponse response = httpclient.execute(target, httpget);
try {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
EntityUtils.consume(response.getEntity());
} finally {
response.close();
}
} finally {
httpclient.close();
}

因为 不给发链接,你去 apache httpcomponents 的网站,找 httpclient ,example 里面都有的

⑻ java 开发一个http的代理服务器

说实话,你的问题很那个。。
不过应该也能实现。
现在问题主要是由于b不能访问c,所以c只能使用TimerTask定时去访问b。
b有2个listener,一个负责侦听来自a的请求,一个负责侦听来自b的。

b中应该会使用到多线程。
下面定义a的Request为x,c的Request为y
由于b会有多个来自a转发的请求,可能会有x1\x2\x3等很多并发的请求,所以b在初始化的时候就需要建立一个等待池.
等待池应该是单例且线程同步的,x一来就new object(request,response),然后放入list。
c的定时器一到,就访问b开放给c的listener,request y。y首先遍历等待池,取出x的request,然后用取出x的response的返回给a。直到等待池为空为止,然后y response给c。

不过要注意的是
1)你会发现,由于c给b的数据应该是放到request y里面作为参数来传的。
2)a的请求如果需要c不同数据接口的数据,那c-->b的request y里就应该包含所有的数据,然后在遍历等待池的时候根据a-->b的request x的id(可以使用sessionid)来区分取哪个。
3)最差的情况,
1,a源源不断的发出x请求,c的request遍历就死循环。
2,如果c的定时时间太短,y1还没完,y2就来了。
3,a源源不断的发出x请求,但是某一请求Xn就无法抢到资源,Xn就挂掉。

这里面很多处理你还要多加控制。

这个想法没实验过,其实如果b可以访问c,其实什么问题都没有了
最后问一句,谁给你这样的需求的?打他

⑼ java HttpClient设置代理的话,用户名和密码怎么设置

使用代理需要导入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。

在连接代理时需要使用用户名和密码构造UsernamePasswordCredentials对象并作为参数传递给HttpClient对象。


具体用法如下:

publicstaticvoidmain(Stringargs[])
{
StringBuffersb=newStringBuffer();
//创建HttpClient实例
HttpClientclient=getHttpClient();
//创建httpGet
HttpGethttpGet=newHttpGet("http://www.csdn.net");
//执行
try{
HttpResponseresponse=client.execute(httpGet);

HttpEntityentry=response.getEntity();

if(entry!=null)
{
InputStreamReaderis=newInputStreamReader(entry.getContent());
BufferedReaderbr=newBufferedReader(is);
Stringstr=null;
while((str=br.readLine())!=null)
{
sb.append(str.trim());
}
br.close();
}

}catch(ClientProtocolExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println(sb.toString());
}
//设置代理
(){
DefaultHttpClienthttpClient=newDefaultHttpClient();
StringproxyHost="proxycn2.huawei.com";
intproxyPort=8080;
StringuserName="china\******";
Stringpassword="*******“
httpClient.getCredentialsProvider().setCredentials(
newAuthScope(proxyHost,proxyPort),
(userName,password));
HttpHostproxy=newHttpHost(proxyHost,proxyPort);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,proxy);
returnhttpClient;
}