我在写一个机票查询的网页,要向一个地址发一个查询请求,然后分析返回的html页面怎么写啊????????????
解决方案 »
- 各位高手们,请帮帮忙,有谁知道将struts2标签输出的错误信息改变成JavaScript方式提示
- webwork2 标签的问题。
- 经典正则匹配一个html标记问题
- jsp验证码问题
- JavaBean的问题 大家帮我看看 3天没整出来了 我都快要彪了
- 关于网站开发文档~~~~等等等!!!
- 求一个查询方面的bean!多谢了!
- 请问一下怎么实现一次性把一个文件夹里的东西都下载下来
- 请问高手:有关文件名为中文的链接文件为何找不到?
- 这个问题.........
- [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe 这是个什么问题啊?
- 分页的BEAN,用JSP调用老出问题!请指教
HttpURLConnection conn = url.openConnection ();
conn.connection ();
conn.setRequestMethod("POST");// 如果你想用get方法,这里改成GET
StringBuffer sb = new StringBuffer ();
sb.append ("Param1=Value1&Param2=Value2....");
OutputStream out = conn.getOutputStream ();
out.write (sb.toString ().getBytes ());
返回的东西是XML
http://yahoo.elong.com/flights/tsearch.aspx?FLY_TYPE=0&g=result&f=72&AID=yahoopaid&BID=travelsearchbox&r=yahoopaid&k=travelsearchbox&Campaign_ID=7010900000&isnative=1&RETURN_DATE=&DEPART_CITY=PEK&DEST_CITY=ZUH&DEST_CITY2=CAN&FLY_DATE=2006-7-31&FLY_TIME=&FLY_DATE2=&FLY_TIME=&AIR_CORP=&ADULT_NUM=1&CHILD_NUM=0&INFANT_NUM=0我把它写到浏览器里,能得到我想要的那个机票查询的结果但是,我把它写到java程序里怎么就不好使呢?高手帮我分析一下,谢了下面是我写的java 程序package com.x4ee.htmlgetter.util;import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.http.Cookie;import org.htmlparser.Parser;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.TextExtractingVisitor;
import org.htmlparser.beans.StringBean;
import org.htmlparser.NodeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.TableTag;
import org.htmlparser.tags.TableRow;
import org.htmlparser.tags.TableColumn;
import org.htmlparser.util.NodeList;import com.x4ee.htmlgetter.util.SearchData;
import com.x4ee.portals.log.Log;public class FlightGetter {
public static Cookie[] cookies =
{
new Cookie ("AASPNETSESSSION", "1031"),
}; /**
* Generate a HTTP cookie header value string from an array of cookies.
* <pre>
* The syntax for the header is:
*
* cookie = "Cookie:" cookie-version
* 1*((";" | ",") cookie-value)
* cookie-value = NAME "=" VALUE [";" path] [";" domain]
* cookie-version = "$Version" "=" value
* NAME = attr
* VALUE = value
* path = "$Path" "=" value
* domain = "$Domain" "=" value
*
* </pre>
* @param cookies The cookies which should be set in the header value.
* @return A string containing the HTTP Cookie Header value.
* @see <a href="http://www.ietf.org/rfc/rfc2109.txt">RFC 2109</a>
*/
public static String generateCookieHeader (Cookie[] cookies)
{
int version;
boolean quote;
StringBuffer ret; ret = new StringBuffer (); version = 0;
for (int i = 0; i < cookies.length; i++)
version = Math.max (version, cookies[i].getVersion ());
if (0 != version)
{
ret.append ("$Version=\"");
ret.append (version);
ret.append ("\"");
}
for (int i = 0; i < cookies.length; i++)
{
if (0 != ret.length ())
ret.append ("; ");
ret.append (cookies[i].getName ());
ret.append ("=");
if (0 != version)
ret.append ("\"");
ret.append (cookies[i].getValue ());
if (0 != version)
ret.append ("\"");
if (0 != version)
{
if ((null != cookies[i].getPath ())
&& (0 != cookies[i].getPath ().length ()))
{
ret.append ("; $Path=\"");
ret.append (cookies[i].getPath ());
ret.append ("\"");
}
if ((null != cookies[i].getDomain ())
&& (0 != cookies[i].getDomain ().length ()))
{
ret.append ("; $Domain=\"");
ret.append (cookies[i].getDomain ());
ret.append ("\"");
}
}
} return (ret.toString ());
}
public static SearchData getStockData(String resource){
SearchData sd = new SearchData();
try{
Parser myParser = new Parser(resource);
myParser.setEncoding("gb2312");
String filterStr = "table";
NodeFilter filter = new TagNameFilter(filterStr);
NodeList nodeList = myParser.extractAllNodesThatMatch(filter);
//设置查询结果标记
for(int i = 0; i<nodeList.size(); i++){
TableTag tabletag = (TableTag) nodeList.elementAt(i);
TableRow testTr = (TableRow)tabletag.getRow(0);
TableColumn testTd = testTr.getColumns()[0];
String testString = testTd.toPlainTextString();
if(testString.equals("股票代码")){
if(tabletag.getRowCount() == 2){
String[] titileSet = new String[10];
String[] dataSet = new String[10];
TableRow titleTr = (TableRow)tabletag.getRow(0);
for(int k = 0; k < 10; k++){
TableColumn titleTd = titleTr.getColumns()[k];
String titleString = titleTd.toPlainTextString();
titileSet[k] = titleString;
}
TableRow dataTr = (TableRow)tabletag.getRow(1);
for(int k = 0; k < 10; k++){
TableColumn dataTd = dataTr.getColumns()[k];
String dataString = dataTd.toPlainTextString();
dataSet[k] = dataString;
}
TableColumn dataTd = dataTr.getColumns()[10];
String stocket = dataTd.getChild(1).getText();
int length = dataTd.getChild(1).getText().length();
stocket = stocket.substring((length - 2), (length - 1));
sd.setSearchResult(true);
sd.setTitleSet(titileSet);
sd.setDataSet(dataSet);
sd.setStockMarket(Integer.parseInt(stocket));
}
}
}
}catch(Exception e){
Log.log.info("取股票数据失败 在com.x4ee.htmlgetter.util.StockGetter.getStockData(String resource)");
Log.log.error( e.toString(), e);
}
return sd;
}
public static void main (String[] args) throws Exception
{
Parser parser;
URL url;
URLConnection connection;
String resource = "http://yahoo.elong.com/flights/tsearch.aspx?FLY_TYPE=0&g=result&f=72&AID=yahoopaid&BID=travelsearchbox&r=yahoopaid&k=travelsearchbox&Campaign_ID=7010900000&isnative=1&RETURN_DATE=&DEPART_CITY=PEK&DEST_CITY=ZUH&DEST_CITY2=CAN&FLY_DATE=2006-7-19&FLY_TIME=&FLY_DATE2=&FLY_TIME=&AIR_CORP=&ADULT_NUM=1&CHILD_NUM=0&INFANT_NUM=0";
parser = new Parser ();
url = new URL (resource);
connection = url.openConnection ();
connection.setRequestProperty ("Cookie", generateCookieHeader(cookies));
parser.setConnection (connection);
TextExtractingVisitor visitor = new TextExtractingVisitor ();
parser.visitAllNodesWith (visitor);
System.out.println (visitor.getExtractedText()); }
}