在我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());
}
}
});
答案 0 :(得分:1)
尝试使用:
将“http://”添加到“api.i-v-o.ch”
所以它应该是:“http://api.i-v-o.ch” 主要是它会帮助你...