我正在調用一個SOAP服務,它返回一個我保存的文件(請參閱下面的代碼)。我想使用服務器發送給我的原始文件名來保存它。正如你所看到的,我只是硬編碼保存流的文件名。Java:獲取下載附件的文件名(HttpClient,PostMethod)
def payload = """
<SOAP-ENV:Body><mns1:getFile xmlns:mns1="http://connect.com/">
<userLogicalId>${params.userLogicalId}</userLogicalId>
<clientLogicalId>${params.clientLogicalId}</clientLogicalId>
def client = new HttpClient()
def statusCode = client.executeMethod(method)
InputStream handler = method.getResponseBodyAsStream()
//TODO: The new File(... has filename hard coded).
OutputStream outStr = new FileOutputStream(new File("c:\\var\\nfile.zip"))
byte[] buf = new byte[1024]
int len
while ((len = handler.read(buf)) > 0) {
outStr.write(buf, 0, len);
}
handler.close();
outStr.close();
所以基本上,我想在響應中所獲取的文件名。謝謝。
感謝兩個答案
的完整代碼中給出。問題在於SOAP服務沒有在頭中添加文件名。當我讀取響應頭時,我得到這個」; start-info =「text/xml」 ,Set-Cookie:stage_80_evi = 2078807832.1.4098350016.1071872916;路徑= / –
ibaralf
2012-02-13 08:17:06
,Content-Type:multipart/related;類型= 「應用/ XOP + xml」 的;邊界= 「---- = _ Part_0_1546767.1329120288435」; start =「