Java 从手机指向ebay.com时出现fileNotFoundException

Java 从手机指向ebay.com时出现fileNotFoundException,java,android,url,redirect,Java,Android,Url,Redirect,如果我通过这个。ebay在某个地方更改了我的url,可能是重定向。奇怪的是Android java无法打开页面 u = new URL(txturl.getText().toString()); 我得到下面的错误,因为它显然打开了新的移动网站。我只是想知道我的url在什么时候改变,如果我能阻止它。如果我指向雅虎、谷歌、亚马逊或其他主要网站,这种情况似乎不会发生。我只是在测试中注意到了这一点 谢谢 09-07 16:08:08.739: INFO/System.out(360): >>

如果我通过这个。ebay在某个地方更改了我的url,可能是重定向。奇怪的是Android java无法打开页面

u = new URL(txturl.getText().toString());
我得到下面的错误,因为它显然打开了新的移动网站。我只是想知道我的url在什么时候改变,如果我能阻止它。如果我指向雅虎、谷歌、亚马逊或其他主要网站,这种情况似乎不会发生。我只是在测试中注意到了这一点

谢谢

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)

一些网站强迫你使用不完整的手机版本——我在手机上保留了第二个浏览器,其中的用户代理字符串声称是桌面浏览器而不是手机浏览器。您可能需要为您的应用程序执行此操作,并使其可更改,或者在网站更改其实现时进行更新。

解决方案(在我的情况下)

如果服务器响应代码>=HTTP\U BAD\U请求(大于400) HttpURLConnectionImpl类的方法getInputStream() FileNotFoundException(因此无法打开输入流)

即使此文件存在,您的对象也不会给您输入流,因为服务器响应代码>=400-更改服务器上的响应代码使用其他类进行连接

09-07 16:08:08.749:警告/系统错误(360):在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162)

源代码片段:


@user440279:您可能希望切换到HttpClient,因为它也内置在Android中,提供了更丰富的API,据说性能更好,等等。
  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       }