javahttp代理
⑴ 怎麼用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;
}