servlets - i want to get Async Fetch Response (Google App Engine) -
i make web application on google app engine , use asyncurlfetch api.
but, cannot response. please me...
searc.java
private arraylist<future<httpresponse>> fetchurl() { arraylist<future<httpresponse>> futurelist = new arraylist<future<httpresponse>>(); (searchresult searchresult : searchresultlist) { if (!searchresult.isempty()) { (webpage webpage : searchresult.getwebpagearray()) { try { url url = new url( "http://myapi.appspot.com/htmlparser?url=" + webpage.getpageurl()); urlfetchservice = urlfetchservicefactory .geturlfetchservice(); futurelist.add(us.fetchasync(url)); } catch (malformedurlexception e) { // todo auto-generated catch block e.printstacktrace(); } } } } return futurelist; } private arraylist<httpresponse> getfetchresult( arraylist<future<httpresponse>> futurelist) { arraylist<httpresponse> responselist = new arraylist<httpresponse>(); try { (future<httpresponse> future : futurelist) { if (future.isdone()) { log.info("future calls get"); httpresponse resp = future.get(); responselist.add(resp); } } } catch (interruptedexception e) { e.printstacktrace(); log.info(e.getmessage()); } catch (executionexception e) { e.printstacktrace(); log.info(e.getmessage()); } return responselist; }
htmlparser.java
public class htmlparser extends httpservlet{ protected static logger log = loggerfactory.getlogger(htmlparser.class); private printwriter writer; private url paramurl; @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { // todo auto-generated method stub resp.setcontenttype("text/html; charset=utf8"); writer = resp.getwriter(); getparameter(req); viewtest(); } private void getparameter(httpservletrequest req){ paramurl = geturl(req); } private url geturl(httpservletrequest req){ try { url url; url = new url(req.getparameter("url")); return url; } catch (malformedurlexception e) { // todo auto-generated catch block e.printstacktrace(); } return null; } private void viewtest(){ writer.println(paramurl); log.info(paramurl.tostring()); }}
future.isdone() "false"
what "true" ?
have read documentation on java futures? future.isdone()
not block, , return false until future has finished executing. results of asynchronous calls, should call future.get()
on each 1 unconditionally.
Comments
Post a Comment