Java 从手机指向ebay.com时出现fileNotFoundException
如果我通过这个。ebay在某个地方更改了我的url,可能是重定向。奇怪的是Android java无法打开页面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): >>
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 }