2010-09-07 3 views
0

Si je transmets http://www.ebay.com à cela. Quelque part le long du chemin ebay change mon URL, peut-être une redirection. Ce qui est bizarre, c'est que Java ne peut pas ouvrir la page. Je reçois l'erreur ci-dessous car elle ouvre apparemment le nouveau site mobile. Je me demande juste à quel point mon URL change et si je m'arrête d'une manière ou d'une autre. Cela ne semble pas se produire si je pointe sur yahoo, google, amazon ou d'autres sites majeurs. Je viens de le remarquer dans mes tests.fileNotFoundException lorsque vous pointez sur ebay.com à partir d'un mobile

Merci.

09-07 16:08:08.739: INFO/System.out(360): >>>>>>>>>>>>>>>>>>>>> Unable to connect to **http://www.ebay.com - http://m.ebay.com?ebayref=http%3A%2F%2Fwww.ebay.com%3A80%2F%3Fredirect%3Dmobile** 
09-07 16:08:08.739: WARN/System.err(360): **java.io.FileNotFoundException**: http://m.ebay.com?ebayref=http%3A%2F%2Fwww.ebay.com%3A80%2F%3Fredirect%3Dmobile 
09-07 16:08:08.749: WARN/System.err(360):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 
09-07 16:08:08.759: WARN/System.err(360):  at parser.XXXXXX.com.parserActivity.process(parserActivity.java:106) 
09-07 16:08:08.759: WARN/System.err(360):  at parser.XXXXXX.com.parserActivity.access$0(parserActivity.java:68) 
09-07 16:08:08.769: WARN/System.err(360):  at parser.XXXXXX.com.parserActivity$1.onClick(parserActivity.java:61) 
09-07 16:08:08.779: WARN/System.err(360):  at android.view.View.performClick(View.java:2408) 
09-07 16:08:08.779: WARN/System.err(360):  at android.view.View$PerformClick.run(View.java:8816) 
09-07 16:08:08.789: WARN/System.err(360):  at android.os.Handler.handleCallback(Handler.java:587) 
09-07 16:08:08.789: WARN/System.err(360):  at android.os.Handler.dispatchMessage(Handler.java:92) 
09-07 16:08:08.799: WARN/System.err(360):  at android.os.Looper.loop(Looper.java:123) 
09-07 16:08:08.809: WARN/System.err(360):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-07 16:08:08.809: WARN/System.err(360):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-07 16:08:08.819: WARN/System.err(360):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-07 16:08:08.819: WARN/System.err(360):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-07 16:08:08.829: WARN/System.err(360):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-07 16:08:08.839: WARN/System.err(360):  at dalvik.system.NativeStart.main(Native Method) 
+0

@ user440279: vous pouvez passer à HttpClient, comme cela est également construit dans Android, offre une API plus riche, effectue aurait mieux , etc. – CommonsWare

Répondre

1

Certains sites vous obligent en versions mobiles cassé - je garde un deuxième navigateur au téléphone avec la chaîne de l'agent utilisateur prétend être un navigateur de bureau au lieu d'un mobile. Vous devrez peut-être faire cela pour votre application, et le rendre modifiable ou faire des mises à jour que le site Web change sa mise en œuvre.

0

Solution (dans mon cas)

Dans le cas où le code de réponse du serveur est> = HTTP_BAD_REQUEST (supérieur à 400) méthode getInputStream(), de la classe HttpURLConnectionImpl jette FileNotFoundException (de sorte que vous ne pouvez pas de flux d'entrée ouvert).

Même si ce fichier existe, votre objet ne sera pas flux d'entrée vous donner, à cause du code de réponse du serveur est> = 400 - changer le code de réponse sur le serveur ou utiliser annother classe pour se connecter.

09-07 16: 08: 08,749: WARN/System.err (360): à org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl. java: 1162)

Fragment de code source: http://www.docjar.com/html/api/org/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnectionImpl.java.html

867  @Override 
    868  public InputStream getInputStream() throws IOException { 
    869   if (!doInput) { 
    870    throw new ProtocolException(Messages.getString("luni.28")); //$NON-NLS-1$ 
    871   } 
    872 
    873   // connect before sending requests 
    874   connect(); 
    875   doRequest(); 
    876 
    ... 
    883   if (responseCode >= HTTP_BAD_REQUEST) { 
    884    throw new FileNotFoundException(url.toString()); 
    885   } 
    886 
    887   return uis; 
    888  } 
Questions connexes