1

填写必要的包裹信息后,我设法通过 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());

我遇到的错误是找不到文件,但是当我在浏览器上传递文件名时,我可以看到运输标签。

4

1 回答 1

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());
于 2016-02-29T06:15:29.467 回答