gpt4 book ai didi

java - Servlet 回复 getHttpConnection

转载 作者:可可西里 更新时间:2023-11-01 16:37:25 26 4
gpt4 key购买 nike

我的 Servlet 中有一些图像,我想将它们下载到我的 Android 应用中。

我正在对这个 URL 执行一个 GET 请求:

public static final String URL ="http://myIpAddress:8080/imgs";

这个类在做这个工作:

private class GetXMLTask extends AsyncTask<String, Void, Bitmap> {
StaggeredPrenotaTour staggeredPrenotaView;

public GetXMLTask(StaggeredPrenotaTour listView){
this.staggeredPrenotaView = listView;
}

@Override
protected Bitmap doInBackground(String... urls) {
Bitmap map = null;
for (String url : urls) {
map = downloadImage(url);
}
return map;
}

// Sets the Bitmap returned by doInBackground
@Override
protected void onPostExecute(Bitmap result) {
staggeredPrenotaView.pullTours(result);
}

// Creates Bitmap from InputStream and returns it
private Bitmap downloadImage(String url) {
Bitmap bitmap = null;
InputStream stream = null;
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;

try {
stream = getHttpConnection(url);
bitmap = BitmapFactory.decodeStream(stream, null, bmOptions);
stream.close();
} catch (IOException e1) {
e1.printStackTrace();
}
return bitmap;
}

// Makes HttpURLConnection and returns InputStream
private InputStream getHttpConnection(String urlString)
throws IOException {
InputStream stream = null;
URL url = new URL(urlString);
URLConnection connection = url.openConnection();

try {
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setRequestMethod("GET");
httpConnection.connect();

if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK){
stream = httpConnection.getInputStream();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return stream;
}
}

在我的 Servlet 中:

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {

InputStream st = getServletContext().getResourceAsStream("/WEB-INF/imgs/cardbackground9.jpg");

BufferedImage bi = ImageIO.read(st); **//error here**

OutputStream out = resp.getOutputStream();

//Todo send InputStream into OutputStream
ImageIO.write(bi, "jpg", out);

out.close();
}

我想接收包含我的位图图像的InputStream,但我收到以下错误:

WARNING: Error for /imgs
java.lang.NoClassDefFoundError: javax.imageio.ImageIO is a restricted class.Please see the Google App Engine developer's guide for more details.
at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
at madapps.bicitourbo.backend.MyServlet.doGet(MyServlet.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
...

最佳答案

为什么需要使用 ImageIO?您可以简单地执行以下操作:

InputStream st = getServletContext().getResourceAsStream("/WEB-INF/imgs/cardbackground9.jpg");

OutputStream os = resp.getOutputStream();

if (st != null) {
byte[] buf = new byte[4096];
int nRead;
while( (nRead=st.read(buf)) != -1 ) {
os.write(buf, 0, nRead);
}
st.close();
}

关于java - Servlet 回复 getHttpConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com