我正在调用一个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 =“