我正在使用带有 HTTPClient 的 Google Drive REST API 创建一个文件夹。REST API is document here 请注意,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) 使用字符串实体
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 进行响应。