Xmlhttprequest HTTP POST 400。请求错误。谷歌云存储XML API调用上传文件

Xmlhttprequest HTTP POST 400。请求错误。谷歌云存储XML API调用上传文件,xmlhttprequest,google-cloud-storage,httpurlconnection,Xmlhttprequest,Google Cloud Storage,Httpurlconnection,我收到了这个错误代码 E/camera_classes.callHttpPostToSendFiles:异常消息E java.io.IOException:服务器返回非正常状态:400消息:错误请求错误流:com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream@42353798atcamera_classes.postMultipartEntity.finish(postMultipartEntity.java:

我收到了这个错误代码

E/camera_classes.callHttpPostToSendFiles:异常消息E java.io.IOException:服务器返回非正常状态:400消息:错误请求错误流:com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream@42353798atcamera_classes.postMultipartEntity.finish(postMultipartEntity.java:161) 在camera_classes.callHttpPostToSendFiles.postData(callHttpPostToSendFiles.java:193) 在camera_classes.callHttpPostToSendFiles$1.doInBackground(callHttpPostToSendFiles.java:109) 在camera_classes.callHttpPostToSendFiles$1.doInBackground(callHttpPostToSendFiles.java:105) 在android.os.AsyncTask$2.call(AsyncTask.java:288) 位于java.util.concurrent.FutureTask.run(FutureTask.java:237) 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 运行(Thread.java:841)

错误发生在

public List<String> finish() throws IOException {
        List<String> response = new ArrayList<String>();

        writer.append(LINE_FEED).flush();
        writer.append("--" + boundary + "--").append(LINE_FEED);
        writer.close();

        // checks server's status code first
        int status = httpConn.getResponseCode();
        String server_message = httpConn.getResponseMessage();
        if (status == HttpURLConnection.HTTP_OK) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    httpConn.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) {
                response.add(line);
            }
            reader.close();
            httpConn.disconnect();
        } else {
            throw new IOException("Server returned non-OK status: " + status + " message: " + server_message + " error stream : " + httpConn.getErrorStream());
        }
public List finish()引发IOException{
列表响应=新建ArrayList();
writer.append(LINE_FEED.flush();
writer.append(“-”+边界+“-”).append(换行符);
writer.close();
//首先检查服务器的状态代码
int status=httpConn.getResponseCode();
String server_message=httpConn.getResponseMessage();
if(status==HttpURLConnection.HTTP\u OK){
BufferedReader reader=新的BufferedReader(新的InputStreamReader(
httpConn.getInputStream());
字符串行=null;
而((line=reader.readLine())!=null){
响应。添加(行);
}
reader.close();
httpConn.disconnect();
}否则{
抛出新IOException(“服务器返回了非正常状态:“+status+”消息:“+Server_message+”错误流:“+httpConn.getErrorStream()”);
}
1) 我有兴趣获得有关列出的错误代码(400错误请求)的更多信息,这样我就可以了解导致“400错误请求”错误的原因。有人能帮忙吗?我已经尝试了所有可用的公共方法-
httpConn.getResponseMessage()
httpConn.getResponseCode()
httpConn.getErrorStream())


2) com.android.okhttp.internal.http.http传输什么$FixedLengthInputStream@42353798这是
httpConn.getErrorStream()的输出

我正在使用一种用于Google Cloud XML Api的上传方法,如下所示。关于第二个问题,可能与使用HttpUrlConnection中的方法setFixedLengthStreamingMode有关,正如我在函数中使用的,您必须输入上传文件的长度:

URL url = new URL("www.urltoupload.com");

HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();

httpCon.setDoOutput(true);
httpCon.setRequestMethod("PUT");
httpCon.setRequestProperty("Content-Type", Utils.getMimeType(path));
httpCon.setRequestProperty("Connection", "Keep-Alive");
httpCon.setFixedLengthStreamingMode((int) dest.length());

final DataOutputStream out = new DataOutputStream(httpCon.getOutputStream());

float bytesTotal = fileBeingUploaded.length();

int bytesRead;
byte buf[] = new byte[8192];
BufferedInputStream bufInput = new BufferedInputStream(new FileInputStream(dest));

while ((bytesRead = bufInput.read(buf)) != -1) {
    out.write(buf, 0, bytesRead);
    out.flush();
}

out.close();