Connection timed out: connect 在线等!!!!!!!

huoyutu 2008-07-29 08:32:01
package com.zdvictory.wjj.common;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
/**
*
* @author huoyutu
*
*/
public class Tools {
private String sessionId;
// private Tools(){}
// private static final Tools tool=new Tools();
// public static Tools getInstance() {
// return tool;
// }

public boolean makeHtml(String loginUrl, String username, String password, String url, String filePath, String chartset) {
HttpURLConnection huc = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
if(this.getSessionId()==null || "".equals(this.getSessionId())){
this.sendLoginRequest(loginUrl, username, password);
}
huc = (HttpURLConnection) new URL(url).openConnection();
huc.setRequestProperty("Cookie",this.getSessionId());
huc.connect();

InputStream stream = huc.getInputStream();
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), chartset));
br = new BufferedReader(new InputStreamReader(stream, chartset));
String line;
while ((line = br.readLine()) != null) {
if (line.trim().length() > 0) {
bw.write(line);
bw.newLine();
}
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
br.close();
bw.close();
huc.disconnect();
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
return true;
}

public void sendLoginRequest(String url,String username,String password) throws IOException {
URL loginUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) loginUrl.openConnection();
// Output to the connection. Default is
// false, set to true because post
// method must write something to the
// connection
// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true
connection.setDoOutput(true);
// Read from the connection. Default is true.
connection.setDoInput(true);
// Set the post method. Default is GET
connection.setRequestMethod("POST");
// Post cannot use caches
// Post 请求不能使用缓存
connection.setUseCaches(false);

// This method takes effects to
// every instances of this class.
// URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。
// connection.setFollowRedirects(true);

// This methods only
// takes effacts to this
// instance.
// URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
connection.setInstanceFollowRedirects(false);

// Set the content type to urlencoded,
// because we will write
// some URL-encoded content to the
// connection. Settings above must be set before connect!
// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
// 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode进行编码
//connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
// 要注意的是connection.getOutputStream会隐含的进行connect。
connection.connect();

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

// 要传的参数
String content = URLEncoder.encode("loginId", "UTF-8") +"="+ URLEncoder.encode(username, "UTF-8");
content += "&" + URLEncoder.encode("password", "UTF-8") +"="+ URLEncoder.encode(password, "UTF-8");

// DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
out.writeBytes(content);

// flush and close
out.flush();
out.close();

//Get Session ID
if (connection != null) {
String key = "";
String session_str = "";
for (int i = 1; (key = connection.getHeaderFieldKey(i)) != null; i++) {
if (key.equalsIgnoreCase("set-cookie")) {
session_str = connection.getHeaderField(key);
session_str = session_str.substring(0, session_str.indexOf(";"));

this.setSessionId(session_str);
}
}
}
connection.disconnect();
}

public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
}

下面是错误信息
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.Socket.connect(Socket.java:516)
at java.net.Socket.connect(Socket.java:466)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:214)
at sun.net.www.http.HttpClient.New(HttpClient.java:287)
at sun.net.www.http.HttpClient.New(HttpClient.java:299)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:795)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:747)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:672)
at com.zdvictory.wjj.common.Tools.sendLoginRequest(Tools.java:147)
at com.zdvictory.wjj.common.Tools.makeHtml(Tools.java:34)
at com.zdvictory.wjj.pricesend.action.PcServerObjectAction.sendMail(PcServerObjectAction.java:277)
java.lang.NullPointerException
at com.zdvictory.wjj.common.Tools.makeHtml(Tools.java:55)
...全文
14657 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun_deqing 2011-09-23
  • 打赏
  • 举报
回复
你的服务器路径是怎么写的?就是你的具体错误是怎么样的?
我用编辑工具就是组建做的,不是手写代码,在控制台也是报的类似错误,我想应该是环境搭配没弄好,借鉴下你的帮助吧。(我是刚接触这东西,也没有什么文档帮助的)
huoyutu 2008-07-31
  • 打赏
  • 举报
回复
找到问题了
原来是服务器路径写错了
huoyutu 2008-07-29
  • 打赏
  • 举报
回复
咋没人啊
各位大虾,帮帮忙啊

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧