gpt4 book ai didi

android - java.lang.String 无法转换为 JSON 对象

转载 作者:行者123 更新时间:2023-11-29 22:03:28 25 4
gpt4 key购买 nike

我的 Downloader.java 文件是

package com.phonegap.plugins.downloader;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;

public class Downloader extends Plugin {

@Override
public PluginResult execute(String action, JSONArray args, String callbackId) {

if (!action.equals("downloadFile"))
return new PluginResult(PluginResult.Status.INVALID_ACTION);

try {

String fileUrl = args.getString(0);
JSONObject params = args.getJSONObject(1);

String fileName = params.has("fileName") ?
params.getString("fileName"):
fileUrl.substring(fileUrl.lastIndexOf("/")+1);

String dirName = params.has("dirName") ?
params.getString("dirName"):
"sdcard/download";

Boolean overwrite = params.has("overwrite") ? params.getBoolean("overwrite") : false;

return this.downloadUrl(fileUrl, dirName, fileName, overwrite, callbackId);

} catch (JSONException e) {

e.printStackTrace();
return new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());

} catch (InterruptedException e) {
e.printStackTrace();
return new PluginResult(PluginResult.Status.ERROR, e.getMessage());
}

}

private PluginResult downloadUrl(String fileUrl, String dirName, String fileName, Boolean overwrite, String callbackId) throws InterruptedException, JSONException {

try {

Log.d("PhoneGapLog", "Downloading "+fileUrl + " into " + dirName + "/" + fileName);

File dir = new File(dirName);
if (!dir.exists()) {
Log.d("PhoneGapLog", "directory " + dirName + " created");
dir.mkdirs();
}

File file = new File(dirName, fileName);

if (!overwrite && file.exists()) {
Log.d("DownloaderPlugin", "File already exist");

JSONObject obj = new JSONObject();
obj.put("status", 1);
obj.put("total", 0);
obj.put("file", fileName);
obj.put("progress", 100);

return new PluginResult(PluginResult.Status.OK, obj);
}

URL url = new URL(fileUrl);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setRequestMethod("GET");
ucon.setDoOutput(true);
ucon.connect();

Log.d("PhoneGapLog", "Download start");

InputStream is = ucon.getInputStream();
byte[] buffer = new byte[1024];
int readed = 0,
progress = 0,
totalReaded = 0,
fileSize = ucon.getContentLength();

FileOutputStream fos = new FileOutputStream(file);

while ((readed = is.read(buffer)) > 0) {

fos.write(buffer, 0, readed);
totalReaded += readed;

int newProgress = (int) (totalReaded*100/fileSize);
if (newProgress != progress)
progress = informProgress(fileSize, newProgress, fileName, callbackId);

}

fos.close();

Log.d("PhoneGapLog", "Download finished");

JSONObject obj = new JSONObject();
obj.put("status", 1);
obj.put("total", fileSize);
obj.put("file", fileName);
obj.put("progress", progress);

return new PluginResult(PluginResult.Status.OK, obj);

}
catch (FileNotFoundException e) {
Log.d("PhoneGapLog", "File Not Found: " + e);
return new PluginResult(PluginResult.Status.ERROR, 404);
}
catch (IOException e) {
Log.d("PhoneGapLog", "Error: " + e);
return new PluginResult(PluginResult.Status.ERROR, e.getMessage());
}

}

private int informProgress(int fileSize, int progress, String fileName, String callbackId) throws InterruptedException, JSONException {

JSONObject obj = new JSONObject();
obj.put("status", 0);
obj.put("total", fileSize);
obj.put("file", fileName);
obj.put("progress", progress);

PluginResult res = new PluginResult(PluginResult.Status.OK, obj);
res.setKeepCallback(true);
success(res, callbackId);

//Give a chance for the progress to be sent to javascript
Thread.sleep(100);

return progress;
}

}

我的downloader.js文件是

function Downloader() {}

Downloader.prototype.downloadFile = function(fileUrl,dirName,fileName,overwrite,win,fail) {

//Make params hash optional.
if (!fail) win = params;
PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl, dirName,fileName,overwrite]);
};

PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("downloader", new Downloader());
PluginManager.addService("Downloader", "com.phonegap.plugins.downloader.Downloader");
});

main.js 文件是

function downloadfile() {
window.plugins.downloader.downloadFile("c:/Users/460725/Desktop/NIACustomerPhase.pdf","sdcard/cache/","NIACustomerPhase.pdf", false,
function(data){
if(data=="exist"){
alert("File already exist");
}
else{
alert("File saved on sd card")
}
},function(data){ alert("error: "+data); });

}

我已将此集成到 android phonegap 项目中。但是当我运行该项目时,我收到警告错误:值 sdcard/cache/at 1 of type java.lang.String cannot be converted to JSON object a 任何人都可以告诉什么可能是问题..提前致谢..


我用以前的代码替换了相同的代码,还更改了 url。现在我的 main.js 文件是

function downloadfile () {

window.plugins.downloader.downloadFile("http://www.toforge.com/archive.zip","sdcard/cache/","archive.zip", false,
function(data){
if(data=="exist"){
alert("File already exist");
}
else{
alert("File saved on sd card");
}
},function(data){ alert("error: "+data); });

}

现在我在单击下载文件链接时收到错误警报无法解析主机"www.toforge.com": No address associated with host name 谁能帮我解决这个错误??提前致谢..

最佳答案

您正在从 Javascript 传递一个字符串数组,但随后试图将其中一个值转换为 JSON,这是不可能的。

将您当前的函数替换为以下将起作用:

Downloader.prototype.downloadFile = function(fileUrl,dirName,fileName,overwrite,win,fail) 
{
//Make params hash optional.
if (!fail) win = params;
PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl, {dirName: dirName, fileName: fileName, overwrite: overwrite} ]);
};

尽管您的代码仍然无法正常工作,因为 c:/Users/460725/Desktop/NIACustomerPhase.pdf 不是有效的 URL,但它是 Windows 的文件系统路径。

when i am changin access origin then i am getting an alert popup **download errorhttp://www.irs.gov/pub/irs-pdf/fw4.pdf ** with lots of errors..I am attaching image with this comment..can you please detect why these errors are coming?

关于android - java.lang.String 无法转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com