【问题标题】:Method Not Allowed (405) while uploadFileTask to QuickBlox - (Android)将文件任务上传到 QuickBlox 时方法不允许 (405) - (Android)
【发布时间】:2018-03-31 12:05:59
【问题描述】:

我的问题是我正在使用 QBContent.uploadFileTask(file, true, null, new QBEntityCallback() 将文件上传到 QuickBlox。但我登陆的是 onError(List list) 。请检查图片。

  1. 这是我在 OnError 方法中得到的:
  2. 在 Logcat 中显示:

    这是我的代码:

    受保护的 void startLoadAttachAudio(最终文件文件) { 处理程序 h = new Handler(Looper.getMainLooper()); h.post(新可运行(){ 公共无效运行(){

            QBContent.uploadFileTask(file, true, null, new QBEntityCallback<QBFile>() {
                @Override
                public void onSuccess(QBFile qbFile, Bundle bundle) {
                    System.out.println("Success");
                }
    
                @Override
                public void onSuccess() {
                    System.out.println("Success2");
                }
    
                @Override
                public void onError(List<String> list) {
                    System.out.println("Failed.");
    
                }
            });
        }//end of run
    }); //end of handler
    

    }

【问题讨论】:

  • 请将 logCat 的完整日志发布到 gist.github.com,以便更好地了解您的问题。为什么要使用旧的 QuickBlox Android SDK?
  • 您使用的 QuickBlox Android SDK 版本非常旧(它可能包含问题,已在最新版本中修复),请使用最新版本来检查您的问题。
  • 感谢您的回复

标签: android quickblox


【解决方案1】:

您可以使用库来上传文件,我使用的是 android async http。例如:

public void UploadFile(CarrierFileInformation carrierFileInformation)
{
    String path = carrierFileInformation.GetSaveDir();
    File file = new File(path);
    if(!file.exists())
    {
        this.uploadedFile = true;
        Toast.makeText(this.activity, this.activity.getResources().getString(R.string.not_found_file), Toast.LENGTH_LONG).show();
        return;
    }
    String link = Settings.DOMAIN + MethodNames.UPLOAD_FILE;
    RequestParams requestParams = new RequestParams();
    try
    {
        requestParams.put(FieldNames.UPLOAD_FILE, file);
        requestParams.put(FieldNames.ORDER_ID, carrierFileInformation.GetOrderId());
        requestParams.put(FieldNames.TEST_ID, carrierFileInformation.GetTestId());
        requestParams.put(FieldNames.TEST_DETAIL_ID, carrierFileInformation.GetTestDetailId());
        requestParams.put(FieldNames.FLAG, carrierFileInformation.GetFlag());
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
    AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
    asyncHttpClient.post(link, requestParams, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            Log.e("t", "işlem tamam");
            uploadedFile = true;
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            uploadedFile = false;
        }
    });
}

requestParams 用于发送参数你的网络服务,文件你知道你的文件。 你可以编辑我的函数。

在 build.gradle 中,您必须添加此代码 compile 'com.loopj.android:android-async-http:1.4.9' independices bloc 然后同步。

【讨论】:

  • 但是,quickblox 提供了它的 on 方法,这些方法可以完美而轻松地工作。为什么我在 onError 中出现 Method Not Allowed
  • 表示请求的URL不接受POST方式。使用 GET 重试。
【解决方案2】:

我自己通过更新 Quickblox 的 SDK 版本解决了这个问题

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2016-04-27
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多