http multipart post是必經之路。很可惜
並沒有包含到MultipartEntity/MultipartEntityBuilder。
所以第一步是找到合用的httpclient lib來用。
apache網站上面目前的最新版4.4的lib 匯入之後雖然可以編譯,但是執行的時候會跑nosuchmethodexception.
因此請下載目前可用的最終版4.3.6。
http://archive.apache.org/dist/httpcomponents/httpclient/binary/httpcomponents-client-4.3.6-bin.zip
下面是程式碼。
HttpPost post = new HttpPost(queryString(url, null)); post.addHeader("Connection", "Keep-Alive"); post.addHeader("Charset", HTTP.UTF_8); try { MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.setCharset(Charset.forName(HTTP.UTF_8)); builder.addBinaryBody("file", file, ContentType.create("image/png"), file.getName()); //要傳檔案的話請這樣用。content-type要自行製作。本例的是傳png檔案。或是強制填入泛用的「binary/octet-stream」似乎也可以。反正server端的重點是拿來存檔... builder.addTextBody("param1", param1); builder.addTextBody("param2", param2); //要傳文字參數的話請這樣用。 post.setEntity(builder.build()); HttpResponse response = client.execute(post); String serverResponse = EntityUtils.toString(response.getEntity()); //看看server回傳的是不是成功。有的server會把結果以gzip encode之後再送,請自行判斷response的encodetype。 } catch (Exception e) {e.printStackTrace();}