Java - 使用POST上传文件到URL,然后检索响应

时间:2013-03-27 16:06:54

标签: java http url post

我想将文件(GPX文件,类似于XML)上传到网址(http://www.gpsvisualizer.com/map_input)。然后等待生成地图并检索它。开发商已经声明这是可能的,但我没有得到任何结果。 到目前为止,这是我的代码:

private static void postData(File fileName) {
    File input = fileName;

    //Setup connection
    URL url = new URL("http://www.gpsvisualizer.com/map");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setInstanceFollowRedirects(false);
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "application/xml");
    connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)");

    //Send file
    OutputStream os = connection.getOutputStream();
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    FileReader fileReader = new FileReader(input);
    StreamSource source = new StreamSource(fileReader);
    StreamResult result = new StreamResult(os);
    transformer.transform(source, result);
    os.flush();

    //Retrieve response
    BufferedReader br = new BufferedReader(  
    new InputStreamReader(connection.getInputStream()));  
    String line = br.readLine();  
    while ( line != null ) {  
        System.out.println(line);  
        line = br.readLine();  
    }  
    br.close();
}

所有这一切,正在设置连接,当我得到响应时,我只获取初始页面的HTML,而不是(应该)映射一个。

1 个答案:

答案 0 :(得分:1)

我意识到我差不多正在做这件事。 在与网站开发人员交谈后,我意识到我可以将GPX文件作为字符串发送。 (这很简单) 然后我将这个字符串放入参数中,这些参数有效!

String data = URLEncoder.encode("data", "UTF-8") + "=" + URLEncoder.encode("convertedGPX", "UTF-8");

OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();