将 FileTask 上传到 QuickBlox 时不允许使用方法 (405) - (Android)

Method Not Allowed (405) while uploadFileTask to QuickBlox - (Android)

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

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

    这是我的代码:

    protected void startLoadAttachAudio(最终文件文件) { 处理程序 h = 新处理程序(Looper.getMainLooper()); h.post(新的Runnable(){ public无效运行(){

            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
    

    }

您可以使用库上传文件,我正在使用 android 异步 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 中,您必须添加此代码编译 'com.loopj.android:android-async-http:1.4.9' 到 dependices bloc 然后同步。

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