Ciao volevo esporvi il mio problema.
Vorrei spedire, tramite un'applicazione java, un file xml ad una servlet utilizzando il metodo POST.
Il codice che ho creato è il seguente:
package nomepackage;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamR equestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
public class PostXml {
public static void main(String[] args) throws Exception {
// Get target URL
String URL= "http://localhost:8080/test";
// Get file to be posted
String XMLFile = "C:\\Biblioteca.xml";
File input = new File(XMLFile);
// Prepare HTTP post
PostMethod post = new PostMethod(URL);
post.setRequestEntity(new InputStreamRequestEntity(
new FileInputStream(input), input.length()));
post.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");
// Get HTTP client
HttpClient httpclient = new HttpClient();
// Execute request
try {
int result = httpclient.executeMethod(post);
// Display status code
System.out.println("Response status code: " + result);
// Display response
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString()) ;
}finally { post.releaseConnection();
// Release current connection to the connection pool once you are done
}
}
} Si tratta di un codice preesistente al quale ho fatto le opportune modifiche per renderlo adatto al mio caso.
Se lancio l'applicazione da eclipse mi dà il seguente output:
java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
at org.apache.commons.httpclient.HttpMethodBase.<init >(HttpMethodBase.java:217)
at org.apache.commons.httpclient.methods.ExpectContin ueMethod.<init>(ExpectContinueMethod.java:92)
at org.apache.commons.httpclient.methods.EntityEnclos ingMethod.<init>(EntityEnclosingMethod.java:114)
at org.apache.commons.httpclient.methods.PostMethod.< init>(PostMethod.java:105)
at com.inera.formatodiscambio.senderxml.PostXml.main( PostXml.java:23)
Exception in thread "main"
La servlet è così fatta, ma non so se va bene per recuperare il file perchè sulle servlet ancora non mi sono documentato bene:
package nomepackage;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ReceiverXml extends HttpServlet {
public ReceiverXml() { }
public void doPost(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException {
ObjectInputStream in = new ObjectInputStream(req.getInputStream());
try {
Object o = in.readObject();
System.out.println(o);
} catch(ClassNotFoundException e) {}
}
}
Oltre a farmi capire perchè il client non funziona, qualcuno potrebbe orientarmi sulla servlet, cioè se in questo modo è in grado di recuperare il file passatole dal client?
Grazie