2013-02-01 35 views
1

執行以下功能時,程序會拋出異常:java.net.SocketException異常:recvfrom的失敗:從ECONNRESET PhoneGap的的文件傳輸

testDownloadFunc: function() { 
    console.log("testDownload"); 
    var remoteFile = "http://192.168.55.177/MvcApplication6/Download/getFile"; 
    var localFileName = "Test01.properties"; 

    function fail(error) { 
     console.log(error.code); 
    } 

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 
     fileSystem.root.getFile(localFileName, {create: true, exclusive: false}, function(fileEntry) { 
      var localPath = fileEntry.fullPath; 
      if (device.platform === "Android" && localPath.indexOf("file://") === 0) { 
       localPath = localPath.substring(7); 
      } 
      var ft = new FileTransfer(); 
      ft.download(remoteFile, 
       localPath, function(entry) { 
        console.log("download complete: " + entry.fullPath); 
       }, fail); 
     }, fail); 
    }, fail);  
} 

以下異常被拋出:02-01 16:01: 16.920: E/FileTransfer(23147): {「target」:「/storage/sdcard0/Test01.properties」,「source」:「http://192.168.55.177/MvcApplication6/Download/getFile」,「http_status」 :200,「code」:3} 02-01 16:01:16.920:E/FileTransfer(23147):java.net.SocketException: recvfrom失敗:ECONNRESET(連接重置對等)02-01 16:01:16.920:E/FileTransfer(23147):at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:552)02-01 16:01:16.920:E/FileTransfer(23147):at libcore。 io.IoBridge.recvfrom(IoBridge.java:516)02-01 16:01:16.920: E/FileTransfer(23147):at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)02-01 16 :01:16.920:E/FileTransfer(23147):在 java.net.PlainSocketImpl.access $ 000(PlainSocketImpl.java:46)02-01 16:01:16.920:E/FileTransfer(23147):在 java。 net.PlainSocketImpl $ PlainSocketInputStream.read(PlainSocketImpl.java:240) 02-01 16:01:16.920:E/FileTransfer(23147):at java.io.BufferedInputStream.read(BufferedInputStream.java:304)02-01 16:01:16.920:E/FileTransfer(23147):at libcore.net.http.ChunkedInputStream.read(ChunkedInputStream.java:52) 02-01 16:01:16.920:E/FileTransfer(23147):at java.io.InputStream.read(InputStream.java:163)02-01 16:01:16.920: E/FileTransfer(23147):at org.apache.cordova.FileTransfer.download(FileTransfer.java:507) 02-01 16:01:16.920:E/FileTransfer(23147):at org.apache.cordova.FileTransfer.execute(FileTransfer.java:88)02-01 16:01:16.920:E/FileTransfer(23147 ):at org.apache.cordova.api.PluginManager $ 1.run(PluginManager.java:231) 02-01 16:01:16.920:E/FileTransfer(23147):at java.lang.Thread.run( Thread.java:856) 02-01 16:01:16.920: E/FileTransfer(23147):引起:libcore.io.ErrnoException:recvfrom 失敗:ECONNRESET(由對等方重置連接)02-01 16:01:16.920: E/FileTransfer (23147):at libcore.io.Posix.recvfromBytes(Native Method)02-01 16:01:16.920:E/FileTransfer(23147):at libcore.io.Posix.recvfrom(Posix.java:131)02 -01 16:01:16.920: E/FileTransfer(23147):at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)02-01 16:01:16.920:E/FileTransfer(23147):at libcore.io.IoBridge.recvfrom(IoBridge.java:513)02-01 16:01:16.920: E/FileTransfer(23147):... 10更多

問題的根本原因以及如何解決? 我使用PhoneGap 2.1和Android 4.1.2。

回答

1

我不確定,但這個問題是在Java IO核心的某個地方,而閱讀太多的文本,我解決了這個問題,我的JSON代碼從450行減少到10行。

我想出了這個解決方案,因爲我使用java做了同樣的工作,並在遇到BufferedReader.readLine()方法時遇到同樣的問題。

而且它可能有助於以另一種方式讀取文件,例如使用byteBuffer或其他方式讀取文件。但在你的情況下(電話缺口),我沒有想法:D

相關問題