Слушатель загрузки WebView выдает, что целевой хост не должен быть нулевым или задан в параметрах error - PullRequest
2 голосов
/ 16 февраля 2012

В моем WebView я пытаюсь загрузить некоторые файлы с некоторых веб-сайтов, но при выполнении http-ответа он выдает ошибку: "Target host must not be null,".

Мой фрагмент кода ...

// 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 Ответ

1 голос
/ 16 февраля 2012

Попробуйте использовать:

Добавьте "http://" к" api.ivo.ch "

Так и должно быть:" http://api.i -vo.ch "в основном это поможетвы ...

...