2012-02-16 22 views
2

在我的WebView試圖從一些網站下載一些文件,但執行http響應時,它給出了一個錯誤,說"Target host must not be null,"WebView下載監聽器正在給予目標主機不能爲空或在參數中設置錯誤

我這段代碼是...

// TODO: Download Listener 
    webview.setDownloadListener(new DownloadListener() { 

    @Override 
    public void onDownloadStart(String url, String sUserAgent, 
     String contentDisposition, String mimetype, 
      long contentLength) { 

    if (sUserAgent == null) { 
    Log.e(TAG + " - Conexion", "Error on useragent"); 
      } 

    String PATH = Environment.getExternalStorageDirectory() 
        + "/download/"; 
     Log.v("", "PATH: " + PATH); 
    File file = new File(PATH); 
     if (file.mkdirs()) { 
    System.out.println("Directry-->" + PATH + " is created"); 
     } 

    try { 
     mUrl = new URL(url); 
     } catch (MalformedURLException e2) { 
      e2.printStackTrace(); 
     } 
     String fileName = getFileName(mUrl); 

    File outputFile = new File(file, fileName); 
    try { 
     fos = new FileOutputStream(outputFile); 
    } catch (FileNotFoundException e1) { 

     e1.printStackTrace(); 
     } 

    client = new DefaultHttpClient(); 

    try { 
     HttpPost request = new HttpPost(URLEncoder.encode(url, "UTF-8")); 
    } catch (UnsupportedEncodingException e1) { 

     e1.printStackTrace(); 
      } 
    request.setHeader("User-Agent", sUserAgent); 
    try { 
     response = client.execute(request); 

     StatusLine status = response.getStatusLine(); 
     if (status.getStatusCode() != HTTP_STATUS_OK) { 

     Toast.makeText(myApp, "Error On Download",Toast.LENGTH_SHORT).show(); 
    } else { 

      InputStream in = response.getEntity().getContent(); 
     byte[] read = new byte[1024]; 
     int numReadBytes = 0, singleByte; 
     boolean endFlow = false; 
     do { 
      singleByte = in.read(); 
      endFlow = singleByte == -1; 
      if (!endFlow) { 
      read[numReadBytes] = (byte) singleByte; 
      numReadBytes++; 
      } 
     } while (!endFlow); 
     if (numReadBytes > 0) { 

     fos.write(read, 0, numReadBytes); 

     } 
    } 
    } catch (IOException e) { 
    Log.e(TAG + " - Conexion", e.getMessage()); 
    } catch (ArrayIndexOutOfBoundsException e) { 
    Log.e(TAG + " - Conexion", e.getMessage()); 
     } 

    } 
}); 

回答

1

嘗試使用:

添加的 「http://」 到 「api.ivo.ch」

所以應該:「http://api.ivo.ch」 主要是它會幫助你...

+0

它是否適合你? – NovusMobile 2012-02-17 05:27:06

相關問題