从 google-http-java-client* 文档中不清楚您将如何发布具有文件字段的表单。
例如,我正在尝试使用 Google Cloud Print API 打印文档:
HttpRequestFactory httpRequestFactory = getHttpRequestFactory();
Map<String, Object> parameters = Maps.newHashMap();
parameters.put("printerId", printRequest.getPrinterId());
parameters.put("title", printRequest.getTitle());
parameters.put("contentType", printRequest.getContentType());
parameters.put("ticket", new Gson().toJson(printRequest.getOptions()));
MultipartContent content = new MultipartContent();
content.addPart(new MultipartContent.Part(new UrlEncodedContent(parameters)));
content.addPart(new MultipartContent.Part(
new FileContent(printRequest.getContentType(), printRequest.getFile())));
try {
HttpResponse response = httpRequestFactory.buildPostRequest(
SubmitUrl, content).execute();
System.out.println(IOUtils.toString(response.getContent()));
} catch (IOException e) {
String message = String.format();
System.out.println("Error submitting print job: " + e.getMessage());
}
不幸的是,这不起作用。API 返回错误“此请求所需的打印机 ID”。在我看来,请求的格式不正确。
我究竟做错了什么?
* 我专门使用 google-http-java-client,因为它为我处理 OAuth 令牌等的自动刷新。请不要回复涉及使用其他 HTTP 客户端的解决方案。