1

必要なパッケージ情報を入力した後、goShippo API 呼び出し (Transaction.create(Map, apiKey)) を使用して、応答されたトランザクション オブジェクトを作成することができました。応答されたトランザクション オブジェクトから、配送ラベルを 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 を渡すと、配送ラベルが表示されます。

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 に答える