在我的上一个应用程序中,我将使用Koush Ion库.它非常方便但我将文件上传到我的休息服务器时遇到了问题.注意:我的服务器对成功上传过程的响应是1
我的代码我喜欢这个:
public class MainActivity extends Activity {
Button upload, login;
TextView uploadCount;
ProgressBar progressBar;
String token, FilePath;
Future<String> uploading;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
upload = (Button) findViewById(R.id.upload);
uploadCount = (TextView) findViewById(R.id.upload_count);
progressBar = (ProgressBar) findViewById(R.id.progress);
token = "147c85ce29dc585966271280d59899a02b94c020";
FilePath = Environment.getExternalStorageDirectory().toString()+"/police.mp3";
upload.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (uploading !=null && !uploading.isCancelled()){
resetUpload();
return;
}
upload.setText("Uploading...");
uploading = Ion.with(MainActivity.this)
.load("http://myserver.com/api/v1/tone/upload/?token="+token)
.setLogging("UPLOAD LOGS:", Log.DEBUG)
.uploadProgressBar(progressBar)
.uploadProgressHandler(new ProgressCallback() {
@Override
public …Run Code Online (Sandbox Code Playgroud) 我想清除位图缓存,但我不知道如何清除位图。我正在使用 Koush Ion 库来加载图片
try {
bitmap = Ion.with(context).load(URLimage).withBitmap().asBitmap().get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
每次单击按钮时我都需要清除位图缓存。提前致谢
Gradle 升级后,当尝试发送非常简单的请求时,ION 给了我这个错误。它在 AVD 和我的物理设备上给了我同样的错误。现在我避免了恢复升级的错误。什么可能导致以下错误?
2020-10-24 12:34:14.275 20605-20647/my.example.project E/AndroidRuntime: FATAL EXCEPTION: ion-ion
Process: my.example.project, PID: 20605
java.lang.AssertionError
at com.koushikdutta.async.AsyncSSLSocketWrapper.write(AsyncSSLSocketWrapper.java:474)
at com.koushikdutta.async.AsyncSSLSocketWrapper.handleHandshakeStatus(AsyncSSLSocketWrapper.java:378)
at com.koushikdutta.async.AsyncSSLSocketWrapper.handshake(AsyncSSLSocketWrapper.java:182)
at com.koushikdutta.async.http.AsyncSSLSocketMiddleware.tryHandshake(AsyncSSLSocketMiddleware.java:89)
at com.koushikdutta.async.http.AsyncSSLSocketMiddleware$2.onConnectCompleted(AsyncSSLSocketMiddleware.java:106)
at com.koushikdutta.async.http.AsyncSocketMiddleware.lambda$getSocket$3$AsyncSocketMiddleware(AsyncSocketMiddleware.java:217)
at com.koushikdutta.async.http.-$$Lambda$AsyncSocketMiddleware$glazjOxu-iNIRY4N890Wl1ngyGo.onCompleted(Unknown Source:12)
at com.koushikdutta.async.future.SimpleFuture.lambda$setCallback$0(SimpleFuture.java:216)
at com.koushikdutta.async.future.-$$Lambda$SimpleFuture$h_gK5Y1XHZI1H8JTE2xOg4dXbp8.onCompleted(Unknown Source:2)
at com.koushikdutta.async.future.SimpleFuture$FutureCallsite.loop(SimpleFuture.java:130)
at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java:153)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:195)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:175)
at com.koushikdutta.async.future.-$$Lambda$VNAuWcttAhMr3VsWCERbmWE6yR0.success(Unknown Source:2)
at com.koushikdutta.async.future.SimpleFuture.lambda$success$4(SimpleFuture.java:287)
at com.koushikdutta.async.future.-$$Lambda$SimpleFuture$DxIsaj7NQi76eWgOKS4iviWPLV0.onCompleted(Unknown Source:4)
at com.koushikdutta.async.future.SimpleFuture$FutureCallsite.loop(SimpleFuture.java:130)
at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java:153)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:195)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:182)
at com.koushikdutta.async.http.-$$Lambda$cBC5du-82c5EcL72rP5wNK7Y2Y4.onConnectCompleted(Unknown Source:2)
at com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:906)
at com.koushikdutta.async.AsyncServer.run(AsyncServer.java:727)
at com.koushikdutta.async.AsyncServer.access$800(AsyncServer.java:46)
at com.koushikdutta.async.AsyncServer$8.run(AsyncServer.java:681)
Run Code Online (Sandbox Code Playgroud)
我在该库的问题列表中找不到相同的错误。
我正在尝试连接到必须使用自签名证书的REST服务(它是Unify PBXs Web服务接口).系统将在软件更新时重新生成它的证书,除非您将证书加载到系统中,否则将始终存在自签名证书.当尝试连接离子时,连接因为自签名证书而关闭(据谷歌带我...).我需要添加到我的实现中以使io接受此证书?我使用离子如下.
Ion.with(context)
.load(...)
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
}
});
Run Code Online (Sandbox Code Playgroud) 我不经常使用JSON,但是我在Android中执行此操作时遇到了一些麻烦而没有其他库.我用Koush标记了Ion,我想用它来检索伦敦的天气数据.我将使用的JSON api来自OpenWeather.据我所知,JSON是有效的,所以我现在卡在Android方面.我的最终目标是拥有一个报告伦敦的对象/字符串Main > temp.这是我的Android代码,但我不确定下一步该怎么做.有任何想法吗?
private void getTemperature() {
Log.d(TAG, "2");
final JsonObject json = new JsonObject();
Ion.with(this, "http://api.openweathermap.org/data/2.5/weather?q=London,uk")
.asJsonObject().setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
// do stuff with the result or error
Log.d("TAG", "Complete");
//json = result;
}
});
}
Run Code Online (Sandbox Code Playgroud)
我的代码进入"完整"日志语句,但现在我正在尝试将结果设置为我创建的json对象,所以我取消注释//json = result,但是我在Eclipse中遇到错误.有帮助吗?我想这个方法简单地输出Main -> Temp哪个(截至目前)是284.51.
我正在尝试使用progressbar修改下载示例中的koush代码,使其写入FileOutputStream而不是File,但eclipse会给我以下错误:
对于ResponseFuture类型,方法progressHandler(new ProgressCallback(){})未定义
这是代码:
File file = new File(DownloadPath, uri.getLastPathSegment());
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
}
Future<FileOutputStream> downloading = Ion.with(getApplicationContext())
.load(uri)
.write(fos)
.progressHandler(new ProgressCallback() {
@Override
public void onProgress(int downloaded, int total) {
// inform the progress bar of updates in progress
}
})
.setCallback(new FutureCallback<FileOutputStream>() {
@Override
public void onCompleted(Exception e, FileOutputStream file) {
// download done...
// do stuff with the File or …Run Code Online (Sandbox Code Playgroud)