Java Apache HttpClient を使用してマルチパート POST リクエストを送信し、いくつかのテスト データを BigQuery テーブルにインポートしようとしていますが、「無効なアップロード リクエスト」というメッセージとともに HTTP 400 エラーが発生し続けます。必要なものを再現するのに十分十分に BigQuery チュートリアルに従ったと確信していますが、機能していません。誰かがこのリクエストを見て、何か問題があるかどうかを確認できますか?
String rawInput = "--xxx\n";
rawInput += "Content-Type: application/json; charset=UTF-8\n";
rawInput += "{\n";
rawInput += "'configuration': {\n";
rawInput += "'load': {\n";
rawInput += "'schema': {\n";
rawInput += "'fields': [\n";
rawInput += "{'name':'field1', 'type':'STRING'},\n";
rawInput += "{'name':'field2', 'type':'STRING'},\n";
rawInput += "{'name':'field3', 'type':'STRING'},\n";
rawInput += "{'name':'field4', 'type':'STRING'},\n";
rawInput += "]\n";
rawInput += "},\n";
rawInput += "'destinationTable': {\n";
rawInput += "'projectId': 'xxxxxxxxxxx [redacted]',\n";
rawInput += "'datasetId': 'test',\n";
rawInput += "'tableId': 'test'\n";
rawInput += "}\n";
rawInput += "createDisposition = CREATE_IF_NEEDED\n";
rawInput += "}\n";
rawInput += "}\n";
rawInput += "}\n";
rawInput += "--xxx\n";
rawInput += "Content-Type: application/octet-stream\n";
rawInput += "\n";
rawInput += "1,1234,11111111,1\n";
rawInput += "2,5678,11111111,1\n";
rawInput += "3,9101,11111111,1\n";
rawInput += "4,6543,11111111,1\n";
rawInput += "--xxx--";
リクエストは次のように実行されます。
postRequest.addHeader("Content-Type", "multipart/related; boundary=xxx;");
postRequest.addHeader("Authorization", "OAuth " + credential.getAccessToken());
StringEntity input = new StringEntity(rawInput);
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
また、addHeader("Content-Type"...) を addHeader("Content-Type:"...) に変更すると、エラーは「Media type 'text/plain' is not supported. Valid media types : [アプリケーション/オクテットストリーム]".