在填写必要的包信息后,我设法通过goShippo API调用创建一个响应的Transaction对象:Transaction.create(Map,apiKey)。形成响应的Transaction对象,我可以将运输标签作为Url:transaction.getObjectId()。
我遇到的问题是如何让我的客户下载货运标签。
我目前的代码是:
fileName= "https://shippo-delivery-east.s3.amazonaws.com/b1b0e6af.pdf?xxxxxx";
File file = new File(fileName);
String mineType = URLConnection.guessContentTypeFromName(file.getName());
if(mineType == null) {
System.out.println("mineType is not detectable");
mineType = "application/octet-stream";
}
response.setContentType(mineType);
response.setHeader("Content-Disposition"
, String.format("inline; filename=\"" + file.getName() +"\""));
response.setContentLength((int)file.length());
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
FileCopyUtils.copy(inputStream, response.getOutputStream());
我遇到的错误是找不到该文件,但是当我在浏览器上传递fileName时,我可以看到发货标签。
答案 0 :(得分:1)
成功创建URL后,您可以调用URL的
openStream()
方法来获取可以从中读取URL内容的流。openStream()
方法返回java.io.InputStream
对象,因此从URL读取就像从输入流中读取一样简单。
因此,您需要创建一个URL对象,然后您可以获取inputStream
。
看起来像这样:
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
String fileName= "https://shippo-delivery-east.s3.amazonaws.com/b1b0e6af.pdf?xxxxxx";
URL urlToLabel = new URL(fileName);
InputStream inputStream = new BufferedInputStream(urlToLabel.openStream());