Last active
August 29, 2015 13:59
-
-
Save gomo/10951763 to your computer and use it in GitHub Desktop.
HttpPostとServletFileUploadでContentTypeを取得できない
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//POSTを投げる側のコード | |
HttpClient httpClient = HttpClientBuilder.create().build(); | |
HttpPost httpPost = new HttpPost("http://127.0.0.1:8080/test/post"); | |
MultipartEntityBuilder params = MultipartEntityBuilder.create(); | |
params.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); | |
//ContentTypeをセットしないと文字化けします | |
params.addTextBody("text", "マルチバイトテキスト", ContentType.create("text/plain", MIME.UTF8_CHARSET)); | |
File upfile = new File( "sample/yoro.jpeg" ); | |
params.addPart("image", new FileBody(upfile, ContentType.create("image/jpeg"))); | |
httpPost.setEntity(params.build()); | |
HttpResponse response = httpClient.execute( httpPost ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//POSTを受ける側のコード | |
DiskFileItemFactory factory = new DiskFileItemFactory(); | |
ServletFileUpload upload = new ServletFileUpload(factory); | |
FileItemHeaders headers = null; | |
Map<String,List<FileItem>> params = upload.parseParameterMap(request); | |
System.out.println(params.get("text").get(0).getString("UTF-8"));//正常に読める | |
System.out.println(params.get("text").get(0).getContentType());//NULL | |
headers = params.get("text").get(0).getHeaders(); | |
for (Iterator<String> iterator = headers.getHeaderNames(); iterator.hasNext();) { | |
String key= iterator.next(); | |
System.out.print(key + " : "); | |
System.out.println(headers.getHeader(key)); | |
}//Content-Typeはありません。 | |
System.out.println(params.get("image").get(0).getContentType());//NULL | |
headers = params.get("image").get(0).getHeaders(); | |
for (Iterator<String> iterator = headers.getHeaderNames(); iterator.hasNext();) { | |
String key= iterator.next(); | |
System.out.print(key + " : "); | |
System.out.println(headers.getHeader(key)); | |
}//Content-Typeはありません。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
下記のような感じで生POSTを覗いてみたら送信されてないことが判明
さらに
これをコメントアウトすると送信されることを確認しました。