Vous êtes peut être en train de développer une application java, peut être sous google appengine, vous voulez manipuler des images ou des ressources qui sont sur d'autres serveurs mais malheureusement vous avez un problème de cross domain. La solution c'est de faire un proxy.
Voici le code d'un proxy qui marche niquel sous sous App Angine. Vous avez le test ici : http://paint.mcbjam.com/proxy?fwdurl=http://fr.wikipedia.org/wiki/Maison-Blanche
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ProxyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse rsp)
throws ServletException, IOException {
try {
String fwdurlstring=req.getParameter("fwdurl");
if(fwdurlstring==null)
{
fwdurlstring="http://images.aviary.com/imagesv5/feather_default.jpg";
}
URL fwdURL = new URL(fwdurlstring);
HttpURLConnection fwdConnection =
(HttpURLConnection) fwdURL.openConnection();
for (String key : fwdConnection.getHeaderFields().keySet()) {
rsp.setHeader(key, fwdConnection.getHeaderField(key));
}
copy(fwdConnection.getInputStream(), rsp.getOutputStream());
} catch (Exception e) {
e.printStackTrace(rsp.getWriter());
}
}
private void copy(InputStream in, OutputStream out) throws IOException {
int len = 0;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
}
}
Voici le code d'un proxy qui marche niquel sous sous App Angine. Vous avez le test ici : http://paint.mcbjam.com/proxy?fwdurl=http://fr.wikipedia.org/wiki/Maison-Blanche
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ProxyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse rsp)
throws ServletException, IOException {
try {
String fwdurlstring=req.getParameter("fwdurl");
if(fwdurlstring==null)
{
fwdurlstring="http://images.aviary.com/imagesv5/feather_default.jpg";
}
URL fwdURL = new URL(fwdurlstring);
HttpURLConnection fwdConnection =
(HttpURLConnection) fwdURL.openConnection();
for (String key : fwdConnection.getHeaderFields().keySet()) {
rsp.setHeader(key, fwdConnection.getHeaderField(key));
}
copy(fwdConnection.getInputStream(), rsp.getOutputStream());
} catch (Exception e) {
e.printStackTrace(rsp.getWriter());
}
}
private void copy(InputStream in, OutputStream out) throws IOException {
int len = 0;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
}
}
Aucun commentaire:
Enregistrer un commentaire
Merci pour votre commentaire