0

Javaを使用して画像をimageshackにアップロードする以下のコードに問題があります。私が受け取る応答は、http が接続を拒否しているというものです。私の問題は、画像ファイルがbase64、byteArrayなどであるかどうかわからないため、画像ファイルをどのように提供しているかにあると思います.

どんな助けでも素晴らしいでしょう、ありがとう。

public String ImageShack (String imageDir, String myKey) {

    //set file
    BufferedImage image = null;
    File file = new File(imageDir);

    //Set namevalue pairs
    List<NameValuePair> params = new ArrayList<NameValuePair>();

    try
    {
        image = ImageIO.read(file);
        ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
        ImageIO.write(image, "png", byteArray);
        byte[] byteImage = byteArray.toByteArray();
        String dataImage = new Base64().encodeAsString(byteImage);

        //Assign name valued pars
        params.add(new BasicNameValuePair("key", myKey));
        params.add(new BasicNameValuePair("fileupload", dataImage));
        params.add(new BasicNameValuePair("format", "json"));

        //Create HTTPClient and Client
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://www.imageshack.us/upload_api.php");

        //set entities
       httpPost.setEntity(new UrlEncodedFormEntity(params));

        //Execute & get response
        HttpResponse response = httpClient.execute(httpPost);
        return response.toString();

    }
    catch(Exception e)
    {
            return "Error: " + e.getMessage();
}
}
4

1 に答える 1

0

ウェブサイトだけのimageshackに固有のものではなく、同様の問題を見つけましたが、ソリューションのコードは次のとおりです。

BufferedImage img = ImageIO.read(new File("temp.jpg"));             
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
baos.flush();
Base64 base = new Base64(false);
String encodedImage = base.encodeToString(baos.toByteArray());
baos.close();
encodedImage = java.net.URLEncoder.encode(encodedImage, "ISO-8859-1");
request.setRequestBody(encodedImage); 

ここに上記の問題があります。画像/Base64 文字列変換に関するこの記事は、それが問題の原因である場合にも役立ちます。

于 2013-01-18T11:32:44.910 に答える