java क्यों HTMLUnit हमेशा होस्ट पेज को दिखाता है, कोई भी कारण नहीं है कि मैं किस प्रकार यूआरएल(क्रॉल करने योग्य जीडब्ल्यूटी एपीपी) में लिखूं?



gwt gwtp (1)

सबसे पहले, ?_escaped_fragment_=article बजाय, शायद &_escaped_fragment_=article कोशिश &_escaped_fragment_=article क्योंकि आपके पास पहले से ही है ? gwt.codesvr , तो 2 ? गड़बड़ कर सकते हैं यूआरएल पैरामीटर पार्सिंग

दूसरा, आपको यह सुनिश्चित करने की ज़रूरत है कि आपका फ़िल्टर पैरामीटर gwt.codesvr होने के मामले को gwt.codesvr । ऐसा लगता है कि आपका फ़िल्टर मानता है कि यह पहला पैरामीटर है - यानी, से शुरू हो रहा है ? । मेरा मानना ​​है कि यहाँ का उदाहरण या तो कोई काम करता है।

यहाँ पूर्ण कोड है

public class CrawlServlet implements Filter{
 public static String getFullURL(HttpServletRequest request) {
    StringBuffer requestURL = request.getRequestURL();
    String queryString = request.getQueryString();


    if (queryString == null) {
        return requestURL.toString();
    } else {
        return requestURL.append('?').append(queryString).toString();
    }
 }

 @Override
 public void destroy() {
 // TODO Auto-generated method stub

 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
 FilterChain chain) throws IOException, ServletException {

 HttpServletRequest httpRequest = (HttpServletRequest) request;
 String fullURLQueryString = getFullURL(httpRequest);
 System.out.println(fullURLQueryString+" what wrong");

 if ((fullURLQueryString != null) && (fullURLQueryString.contains("_escaped_fragment_"))) {
     // remember to unescape any %XX characters
     fullURLQueryString=URLDecoder.decode(fullURLQueryString,"UTF-8");
     // rewrite the URL back to the original #! version
         String url_with_hash_fragment=fullURLQueryString.replace("?_escaped_fragment_=", "#!");


         final WebClient webClient = new WebClient();

         WebClientOptions options = webClient.getOptions();
         options.setCssEnabled(false);
         options.setThrowExceptionOnScriptError(false);
         options.setThrowExceptionOnFailingStatusCode(false);
         options.setJavaScriptEnabled(false);
         HtmlPage page = webClient.getPage(url_with_hash_fragment);

         // important!  Give the headless browser enough time to execute JavaScript
         // The exact time to wait may depend on your application.

         webClient.waitForBackgroundJavaScript(20000);

         // return the snapshot
         //String originalHtml=page.getWebResponse().getContentAsString();
         //System.out.println(originalHtml+" +++++++++");
         System.out.println(page.asXml()+" +++++++++");

         PrintWriter out = response.getWriter();
         out.println(page.asXml());
         //out.println(originalHtml);
     } else {
      try {
        // not an _escaped_fragment_ URL, so move up the chain of servlet (filters)
        chain.doFilter(request, response);
      } catch (ServletException e) {
        System.err.println("Servlet exception caught: " + e);
        e.printStackTrace();
      }
    }

 }


 @Override
 public void init(FilterConfig arg0) throws ServletException {
 // TODO Auto-generated method stub

 }


}

यूआरएल " http://127.0.0.1:8888/Myproject.html?gwt.codesvr=127.0.0.1:9997?_escaped_fragment_=article " खोलने के बाद, यह इस तरह होस्ट पेज एचटीएमएल कोड दिखाया:

<html>

<head>
<meta name="fragment" content="!">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<!-- -->
<!--
 Consider inlining CSS to reduce the number of requested files 
-->
<!-- -->
<link type="text/css" rel="stylesheet" href="MyProject.css"/>
<!-- -->
<!-- Any title is fine -->
<!-- -->
<title>MyProject</title>
<!-- -->
<!-- This script loads your compiled module. -->
<!-- If you add any GWT meta tags, they must -->
<!-- be added before this line. -->
<!-- -->
<script type="text/javascript" language="javascript" ></script>
<!-- -->
<!-- The body can have arbitrary html, or -->
<!-- you can leave the body empty if you want -->
<!-- to create a completely dynamic UI. -->
<!-- -->
</head>
<body>

<div id="loading">
Loading
<br/>
<img src="../images/loading.gif"/>
</div>
<!-- OPTIONAL: include this if you want history support -->
<iframe src="javascript:''" id="__gwt_historyFrame" tabindex="-1" style="position: absolute; width: 0;height: 0; border:0;"></iframe>
<!--
 RECOMMENDED if your web app will not function without JavaScript enabled 
-->
<noscript>

<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1pxsolid red; padding: 4px; font-family: sans-serif;">
Your web browser must have JavaScript enabled in order for this application to display correctly.
</div>
</noscript>
</body>
</html>

दूसरी ओर, " http://127.0.0.1:8888/Myproject.html?gwt.codesvr=127.0.0.1:9997#!article " ठीक काम करता है और बिना किसी समस्या के लेख दिखाता है

मैंने भी पूरी परियोजना को संकलित किया और इसे टोमैक 7 के तहत भाग लिया, लेकिन मुझे एक ही समस्या है। यह हमेशा होस्ट पृष्ठ का html दिखाता है

नोट: आलेख पृष्ठ नेस्टेड प्रस्तोता है जो हेडर प्रस्तुतकर्ता के अंदर एम्बेड किया गया है लेकिन मुझे नहीं लगता कि यह मुख्य कारण है क्योंकि उसने शीर्ष लेख पृष्ठ भी नहीं दिखाया।





gwtp