有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

指向易趣时出现java fileNotFoundException。来自手机的com

如果我把http://www.ebay.com传递给这个。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 安卓.view.View.performClick(View.java:2408)
09-07 16:08:08.779: WARN/System.err(360):     at 安卓.view.View$PerformClick.run(View.java:8816)
09-07 16:08:08.789: WARN/System.err(360):     at 安卓.os.Handler.handleCallback(Handler.java:587)
09-07 16:08:08.789: WARN/System.err(360):     at 安卓.os.Handler.dispatchMessage(Handler.java:92)
09-07 16:08:08.799: WARN/System.err(360):     at 安卓.os.Looper.loop(Looper.java:123)
09-07 16:08:08.809: WARN/System.err(360):     at 安卓.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.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-07 16:08:08.829: WARN/System.err(360):     at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-07 16:08:08.839: WARN/System.err(360):     at dalvik.system.NativeStart.main(Native Method)

共 (2) 个答案

  1. # 1 楼答案

    解决方案(以我为例)

    如果服务器响应代码为>;=HTTP_错误_请求(大于400) HttpURLConnectionImpl类的方法getInputStream() FileNotFoundException(因此无法打开输入流)

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

    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)

    源代码片段: 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       }
    
  2. # 2 楼答案

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