簡體   English   中英

如何使用Google Drive REST AP和HTTPClient創建文件夾?

[英]How to create a Folder with Google Drive REST AP and HTTPClient?

我正在使用帶有HTTPClient的Google Drive REST API來創建文件夾。 REST API是這里的文檔請注意REST AP請求執行 - 但使用了錯誤的數據:tt創建一個名為“untitled”的新文件並將我的json放在那里。

我已經嘗試了使用HTTPClient構建POST請求的不同方法,這些方法成功執行 - 但不知何故,Google Drive響應創建文件並返回此數據並忽略我提交的POST數據。

這就是服務器所響應的內容
..

“kind”:“drive#file”,“id”:“0B-fYJN-c4UDjUlh1TUZadF9vejA”,這是一個有效的ID“title”:“Untitled”,----錯誤的標題“mimeType”:“application / json; charset = UTF-8“, - 這是錯誤的mimeType ..

我嘗試了以下調用API的方法:我不確定我發送的數據發生了什么。

1)使用表單名稱值對

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("https://www.googleapis.com/upload/drive/v2/files?key="+GoogleClientConstants.GOOGLE_api_key);

postRequest.addHeader("Authorization", "Bearer " + accessToken);
postRequest.addHeader("Content-Type", "application/json; charset=UTF-8");


List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("title", "vip"));
nvps.add(new BasicNameValuePair("mimeType", "application/vnd.google-apps.folder"));
postRequest.setEntity(new UrlEncodedFormEntity(nvps, org.apache.http.Consts.UTF_8 ));
HttpResponse response = httpClient.execute(postRequest);

2)使用StringEntity

JSONObject jo= new JSONObject();
jo.element("title", "pets").element("mimeType", "application/vnd.google-apps.folder");



ContentType contentType= ContentType.create("application/json", Charset.forName("UTF-8")) ;
StringEntity entity = new StringEntity(jo.toString(), contentType); 

logger.info(" sending "+ jo.toString());


postRequest.setEntity(entity);


HttpResponse response = httpClient.execute(postRequest);

在這兩種情況下,Google API都會以200響應以及上面提到的FileResource。

我用你的代碼創建了一個小例子。 對我來說一切正常。 請看我的源代碼:

import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

import com.google.gson.JsonObject;

public class SourceCodeProgram {

    public static void main(String argv[]) throws Exception {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost post = new HttpPost(
                "https://www.googleapis.com/drive/v2/files");
        post.addHeader("Content-Type", "application/json");
        post.addHeader("Authorization",
                "Bearer XXXXXXXXXXXXXXXXXXXXXXXXX");

        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("title", "Test folder");
        jsonObject
                .addProperty("mimeType", "application/vnd.google-apps.folder");

        post.setEntity(new StringEntity(jsonObject.toString()));
        httpClient.execute(post);
    }
}

上面的代碼不會拋出任何異常。 我已經檢查了我的驅動器,我可以在其中看到“測試文件夾”。 您在帖子網址中放置的關鍵是什么?

您為什么不在自己的應用中使用Google雲端硬盤客戶端庫

要創建子文件夾,您必須使用父文件夾的ID,例如在ID為XXX的父文件夾“super”中創建文件夾“sub”:

POST https://www.googleapis.com/drive/v2/files
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
...
{
  "title": "sub",
  "parents": [{"id":"XXX"}]
  "mimeType": "application/vnd.google-apps.folder"
}

要創建根文件夾,可以忽略“parents”參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM