HTTPClient で Google Drive REST API を使用してフォルダを作成しています。REST API のドキュメントはこちら REST AP リクエストが実行されることに注意してください -- ただし、間違ったデータが使用されます: tt は「untitled」という名前の新しいファイルを作成し、そこに json を配置します。
正常に実行される HTTPClient を使用して POST リクエストを作成するさまざまな方法を試しましたが、何らかの方法で Google ドライブが応答してファイルを作成し、このデータを返し、送信した 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 が返されます。