1
我试图使用Java Apache HttpClient发送多部分POST请求,以将某些测试数据导入到BigQuery表中,但我一直收到HTTP 400错误消息“Invalid Upload Request ”。我很确定我很好地遵循BigQuery教程来重现所需,但不起作用。有人可以看看这个请求,看看它是否有什么问题吗?POST中的“无效上传请求”
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来( “内容类型:” .. ),错误更改为“Media type'text/plain'不支持。有效媒体类型:[application/octet-stream]”。
我在使用node.js执行多部分文章时遇到同样的问题。你有没有发现问题是什么? – Gus
@Gus:不,不幸的是我没有,而且我已经开始了另一个项目,所以我不再追求这个问题。我希望你找到/找到了解决方案! –