2016-04-14 14 views
0

webapiに他のフィールドと共にファイルをサーバーに投稿する必要があります。これは私が実装したコードですが、うまくいかないようです。Javaを使用して複数のフィールドと共にファイルをPOSTする方法

FileInputStream fileStream = new FileInputStream(file); 
b = new byte[(int)file.length()]; 
fileStream.read(b); 
fileName = file.getName(); 
String crlf = "\r\n"; 
String twoHyphens = "--"; 
String boundary = "*****"; 

URL url = new URL(URL); 
connection = (HttpURLConnection)url.openConnection(); 
connection.setDoOutput(true); 
connection.setDoInput(true); 
connection.setRequestMethod("POST"); 
connection.setUseCaches(false); 
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); 

DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
wr.writeBytes(twoHyphens+boundary+crlf); 
wr.writeBytes("Content-Disposition: form-data; process=\"extractText\";user=\"" + username + "\";pass=\"" + password + "\";filename=\"" + file.getName() + "\";file=\""); 
wr.write(b); 
wr.writeBytes("\"" + crlf); 
wr.writeBytes(crlf); 
wr.writeBytes(twoHyphens + boundary + twoHyphens + crlf); 
wr.flush(); 
wr.close(); 

responseStream = new InputStreamReader(connection.getInputStream()); 
BufferedReader br = new BufferedReader(responseStream); 
strBuff = new StringBuffer(); 
String s; 
while ((s = br.readLine()) != null) { 
    strBuff.append(s); 
} 
br.close(); 
responseStream.close(); 
connection.disconnect(); 
str = strBuff.toString(); 
data = str; 
parser = new JSONParser(); 
jsonObj = (JSONObject)parser.parse(str); 
str = jsonObj.get("status").toString(); 

データが投稿されていません。助けてください。

+0

のような他の実装を使用すると、通常のtry-catchに包まれoutputstreamsを持っていないでしょうも考えることができますか? https://examples.javacodegeeks.com/core-java/io/dataoutputstream/write-string-as-bytes-to-file-with-dataoutputstream/ – cYrixmorten

+0

はい、私は例外がないので、ここでは不要だと思いました。 –

答えて

0

私はHTTPクライアントの実装を使用することをお勧めします。

例えば、この1つはジャージークライアントでそれを行う方法を示しています。 https://stackoverflow.com/a/24647315/3356136

あなたはApache HttpComponents

+0

HttpClientは、それとともに使用される他のクラスと共に廃止予定です。 –

+0

Commons HttpClientは廃止され、Http Componentsがそれを置き換えました。 https://hc.apache.org/httpclient-legacy/index.html –

関連する問題