-3

画像ホスティングサイト(fastpic.ru)に画像をアップロードしようとしていますが、期待どおりに正しい応答が得られません。私はフィドラーを使用して、正しいパラメーターを送信するかどうかを確認しました。すべてが正常であるように見えますが、正しい応答を得ることができません。適切な方法でアップロードして応答を取得する方法を教えてください。

正しい応答http://fastpic.ru/session/2012/0425/Y6sEtGjtT1.htmlのようなものを受け取る必要がありますが、 http: //fastpic.ru/index.phpしか受け取りません。

ありがとうございました

これは私のコードです

    String urlToConnect = "http://fastpic.ru/uploadmulti";
    String boundary = Long.toHexString(System.currentTimeMillis()); // Generate random boundary
    URLConnection connection = new URL(urlToConnect).openConnection();
    connection.setDoOutput(true); // This sets request method to POST.
    connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
    OutputStream output = null;
    PrintWriter writer = null;
    try {
        output = connection.getOutputStream();
        writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8"), true); // true = Autoflush, important!

        writer.println("-----------------------------" + boundary);
        writer.println("Content-Disposition: form-data; name=\"file[]\"; filename=\"" + fileToUpload.getName() + "\"");
        writer.println("Content-Type: image/jpeg");
        writer.println();
        InputStream input = null;
        try {
            input = new FileInputStream(fileToUpload);
            byte[] buffer = new byte[1024];
            for (int length = 0; (length = input.read(buffer)) > 0;) {
                output.write(buffer, 0, length);
            }
            output.flush();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException logOrIgnore) {
                }
            }
        }
        writer.println();

        writer.println("-----------------------------" + boundary);
        writer.println("Content-Disposition: form-data; name=\"submit\"");
        writer.println();
        writer.println("Загрузить");

        writer.println("-----------------------------" + boundary);
        writer.println("Content-Disposition: form-data; name=\"uploading\"");
        writer.println();
        writer.println("1");
        writer.println("-----------------------------" + boundary + "--");

    } finally {
        if (writer != null) {
            writer.close();
        }
    }

    BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                connection.getInputStream()));
    String decodedString;
    while ((decodedString = in.readLine()) != null) {
        System.out.println(decodedString);
    }
    in.close();
4

1 に答える 1

1

正しい出力が返されない場合は、入力に問題がある可能性があります。

この種のPOSTには、http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.htmlMultipartEntityなどApacheHTTPコンポーネントを使用することをお勧めします。データ。データを手動でエンコードしようとしている場合、単純な間違いを犯して全体が機能しなくなるのは非常に簡単です。Apacheコンポーネントを使用した例はたくさんあり、非常に簡単に使用できます。

于 2012-04-25T06:06:27.007 に答える