Hello,

I'm having a similar issue where my servlet can not reach a URL within
my company's intranet. My company has a proxy and firewall, but I've
written other servlets that don't have any issue reaching URLs on my
intranet. It's possible that gwt requires me to manually specify a
proxy, but I've noticed trying to use the java.net.Proxy class is
unsupported by appengine, and was wondering if anyone had other
methods of connecting. I will paste the code below, with the
exception. I've tried this in development mode and I've tried creating
a war and posting it to my company's sunone server. No luck either
way.


        System.setProperty("http.proxyHost", "my-company-proxy");
        System.setProperty("http.proxyPort", "80");
        String urlStr = "http://my-company-intranet.com";;

                  try
                  {
                        StringWriter content = new StringWriter();
                        URL url = new URL(urlStr);

//                      Proxy proxy = new Proxy(Proxy.Type.HTTP, new
InetSocketAddress("my-company-proxy.com", 80));

                        URLConnection spoof = url.openConnection();
                        InputStream i = spoof.getInputStream();
                        spoof.setRequestProperty("User-Agent", "Mozilla/4.0
(compatible; MSIE 5.5; Windows NT 5.0; H010818)" );
                        InputStreamReader isr = new InputStreamReader(i);
                        BufferedReader in = new BufferedReader(isr);





and the exception is...




Initializing AppEngine server
The server is running at http://localhost:8888/
java.io.IOException: Could not fetch URL: http://my-company-intranet.com
        at
com.google.appengine.api.urlfetch.URLFetchServiceImpl.handleApplicationException(URLFetchServiceImpl.java:
75)
        at
com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:
45)
        at
com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler
$Connection.fetchResponse(URLFetchServiceStreamHandler.java:409)
        at
com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler
$Connection.getInputStream(URLFetchServiceStreamHandler.java:290)
        at
myproject.server.search.GreetingServiceImpl.getURLTextContent(GreetingServiceImpl.java:
118)
        at
myproject.server.search.GreetingServiceImpl.greetServer(GreetingServiceImpl.java:
50)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
100)
        at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
562)
        at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
188)
        at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
224)
        at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
62)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1093)
        at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
        at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
        at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
121)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
360)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
712)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
        at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
        at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:352)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
        at org.mortbay.jetty.Server.handle(Server.java:313)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
        at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:844)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
        at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
396)
        at org.mortbay.thread.BoundedThreadPool
$PoolThread.run(BoundedThreadPool.java:442)




Any ideas?


- Jason






On Mar 17, 10:29 am, jhulford <[email protected]> wrote:
> If you're not actually deploying to the App Engine environment you can
> remove the GAE class restrictions in the GWT plugin options and use
> whatever classes you want.
>
> On Mar 16, 10:09 pm, vegbenz <[email protected]> wrote:
>
> > So I discovered that I need to add any extra libraries into /war/WEB-
> > INF/lib -- added apache httpclient, apache logging, and apache codec
> > jars.
>
> > Now I get this error ---
>
> > java.net.Socket is a restricted class. Please see the Google  App
> > Engine developer's guide
>
> > But the gwt docs seem to suggest i can use anything i want on the
> > server side:
>
> > "Tip: Although GWT translates Java into JavaScript for client-side
> > code, GWT does not meddle with your ability to run Java bytecode on
> > your server whatsoever. Server-side code doesn't need to be
> > translatable, so you're free to use any Java library you find useful."
>
> > Well this one would be useful...  any ideas why it is a restricted
> > class?  and what that means?
>
> > Anecdotally i saw that I should be able to use URLConnection?  I guess
> > I'll try that.
>
> > Thanks!
>
> > On Mar 16, 11:43 am, vegbenz <[email protected]> wrote:
>
> > > Hi, when i run the code below as standalone pojo, it works fine, but
> > > in my "GreetingServiceImpl" on server it returns 500 error;
>
> > > ** please note i DO want to do this from the server.  i saw the
> > > tutorial about adding script tags to accomplish this from the client.
> > > I need to do the fetch from the server side for other reasons.
> > > thanks!
>
> > > import java.io.IOException;
>
> > > import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
> > > import org.apache.commons.httpclient.HttpClient;
> > > import org.apache.commons.httpclient.HttpException;
> > > import org.apache.commons.httpclient.HttpStatus;
> > > import org.apache.commons.httpclient.methods.GetMethod;
> > > import org.apache.commons.httpclient.params.HttpMethodParams;
>
> > > public class TestRemoteCall {
>
> > >         public static void main(String args[]) {
>
> > >                 HttpClient client = new HttpClient();
>
> > >                 GetMethod method = new 
> > > GetMethod("http://waterdata.usgs.gov/tx/nwis/
> > > current/?
> > > type=flow&group_key=basin_cd&search_site_no_station_nm=barton");
>
> > >                 // Provide custom retry handler is necessary
> > >                 
> > > method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new
> > > DefaultHttpMethodRetryHandler(3, false));
>
> > >                 try {
> > >                         // Execute the method.
> > >                         int statusCode = client.executeMethod(method);
>
> > >                         if (statusCode != HttpStatus.SC_OK) {
> > >                                 System.err.println("Method failed: " + 
> > > method.getStatusLine());
> > >                         }
>
> > >                         // Read the response body.
> > >                         byte[] responseBody = method.getResponseBody();
>
> > >                         // Deal with the response.
> > >                         // Use caution: ensure correct character encoding 
> > > and is not binary
> > > data
> > >                         //      System.out.println(new 
> > > String(responseBody));
> > >                         System.out.println(new String(responseBody));
>
> > >                 } catch (HttpException he) {
> > >                         System.err.println("Fatal protocol violation: " + 
> > > he.getMessage());
> > >                         he.printStackTrace();
> > >                 } catch (IOException e) {
> > >                         System.err.println("Fatal transport error: " + 
> > > e.getMessage());
> > >                         e.printStackTrace();
> > >                 } finally {
> > >                         // Release the connection.
> > >                         method.releaseConnection();
> > >                 }
> > >         }
>
> > > }
>
> > > HERE is the error message
>
> > > import java.io.IOException;
>
> > > import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
> > > import org.apache.commons.httpclient.HttpClient;
> > > import org.apache.commons.httpclient.HttpException;
> > > import org.apache.commons.httpclient.HttpStatus;
> > > import org.apache.commons.httpclient.methods.GetMethod;
> > > import org.apache.commons.httpclient.params.HttpMethodParams;
>
> > > public class TestRemoteCall {
>
> > >         public static void main(String args[]) {
>
> > >                 HttpClient client = new HttpClient();
>
> > >                 GetMethod method = new 
> > > GetMethod("http://waterdata.usgs.gov/tx/nwis/
> > > current/?
> > > type=flow&group_key=basin_cd&search_site_no_station_nm=barton");
>
> > >                 // Provide custom retry handler is necessary
> > >                 
> > > method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new
> > > DefaultHttpMethodRetryHandler(3, false));
>
> > >                 try {
> > >                         // Execute the method.
> > >                         int statusCode = client.executeMethod(method);
>
> > >                         if (statusCode != HttpStatus.SC_OK) {
> > >                                 System.err.println("Method failed: " + 
> > > method.getStatusLine());
> > >                         }
>
> > >                         // Read the response body.
> > >                         byte[] responseBody = method.getResponseBody();
>
> > >                         // Deal with the response.
> > >                         // Use caution: ensure correct character encoding 
> > > and is not binary
> > > data
> > >                         //      System.out.println(new 
> > > String(responseBody));
> > >                         System.out.println(new String(responseBody));
>
> > >                 } catch (HttpException he) {
> > >                         System.err.println("Fatal protocol violation: " + 
> > > he.getMessage());
> > >                         he.printStackTrace();
> > >                 } catch (IOException e) {
> > >                         System.err.println("Fatal transport error: " + 
> > > e.getMessage());
> > >                         e.printStackTrace();
> > >                 } finally {
> > >                         // Release the connection.
> > >                         method.releaseConnection();
> > >                 }
> > >         }
>
> > > }

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to