通过POST将位图发送到服务器B2不起作用OKhttpClient HttpURLConnection

问题描述

我正在使用Backblaze,并设法将文件(图像和视频)上传到我的iOS应用(swift 5)中的存储桶中,但是我无法在Java android应用中做到这一点。

我收到正确的身份验证令牌,下载网址,上传网址和API网址。

但是当我尝试将其发布到该网址时,它不起作用,并且收到以下错误消息

PATH_TO_HIT="/login"  bundle exec derailed exec perf:mem_over_time

尝试将数据发布到上传网址的函数如下

USE_SERVER=puma

错误代码如您所见

401

我不知道为什么它不起作用。 就像我说的那样,它在我的iOS设备上运行正常,该设备使用基本上相同的代码,但仅以迅捷的方式编写(摘自指南) 我个人认为这不是后起之秀,而是我的要求是错误的? 还是我的位图格式?

或者也许我必须异步进行?在将其从主线程中移出之前,我曾用一个线程尝试过它,但是它也不起作用。

W/OkHttpClient: A connection to https://googleads.g.doubleclick.net/ was leaked. Did you forget to close a response body?
D/yyyy enclosed: saveImgToStorage:     buffer(com.android.okhttp.internal.http.Http1xStream$FixedLengthSource@e5232ab).inputStream()
saveImgToStorage: 401
W/System.err: java.net.ProtocolException: cannot write request body after response has been read
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getoutputStream(HttpURLConnectionImpl.java:264)
    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getoutputStream(DelegatingHttpsURLConnection.java:218)
    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getoutputStream(UnkNown Source:0)
    at com.flax.de.Helper.StorageService.saveImgToStorage(StorageService.java:192)
    at com.flax.de.Helper.StorageService.getUploadUrl(StorageService.java:142)
    at com.flax.de.Helper.StorageService.getAuthData(StorageService.java:95)
W/System.err:     at com.flax.de.Categories.NewPostFragment$3.run(NewPostFragment.java:341)
    at java.lang.Thread.run(Thread.java:764)
如果使用此代码,我会收到
   static private void saveImgToStorage(Context context,String id,String uploadUrl,String uploadAuthorizationToken,String downloadUrl,Uri imageUrl,String bucketName,Interfaces.OnSuccessHashMap onSuccess,Interfaces.OnError onError) throws IOException {

    String photoUrl = downloadUrl+"/file/"+bucketName+"/"+id;
    HashMap hashMap = new HashMap();
    hashMap.put(API.databaseStrings.URL,photoUrl);
    Bitmap bmp = MediaStore.Images.Media.getBitmap(context.getContentResolver(),imageUrl);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG,100,baos);
    byte[] fileData = baos.toByteArray();
    String contentType = "image/jpg";
    String sha1 = "do_not_verify";



    HttpURLConnection connection = null;
    try {
        URL url = new URL(uploadUrl);
        connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Authorization",uploadAuthorizationToken);
        connection.setRequestProperty("Content-Type",contentType);
        connection.setRequestProperty("X-Bz-File-Name",id);
        connection.setRequestProperty("X-Bz-Content-Sha1",sha1);
        connection.setDoOutput(true);

        Log.d("yyyy enclosed","saveImgToStorage: " + connection.getErrorStream().toString());
        Log.d("yyyy enclosed","saveImgToStorage: " + connection.getResponseCode());

        DataOutputStream writer = new DataOutputStream(connection.getoutputStream());
        writer.write(fileData);
        String jsonResponse = myInputStreamReader(connection.getInputStream());
        JSONObject obj = new JSONObject(jsonResponse);


        System.out.println(jsonResponse);
    } catch (Exception e) {
        e.printstacktrace();
        onError.onError();
    } finally {
        connection.disconnect();
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)