我在写一个机票查询的网页,要向一个地址发一个查询请求,然后分析返回的html页面怎么写啊????????????

解决方案 »

  1.   

    可以使用Apache的http-client-common包来实现模拟Request
      

  2.   

    URL url = new URL ("http://www.some-side.com/some-page.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 ());
      

  3.   

    XMLHttpRequest
    返回的东西是XML
      

  4.   

    谁帮我看下这个网址
    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());    }
    }