我不得不爲此使用TCP套接字。使用HTTP協議通過TCP套接字獲取圖像
我需要查詢一些IP,從它得到一個圖像,並把它放在一個文件中。
所以我實際的代碼如下所示:
InetAddress ip = InetAddress.getByAddress(rawip);
Socket socket = new Socket(ip, 80);
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println("GET "+ url +" HTTP/1.1");
pw.println("Host: " + m_url.substring(4));
pw.println("Connection: Close");
pw.println("User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36");
pw.println("");
pw.flush();
BufferedReader in = new BufferedReader(new InputStreamReader (socket.getInputStream()), 1);
String ln;
//Reading header
while((ln = in.readLine()) != null)
{
//if header is finished
if (ln.equals("")) break;
}
BufferedImage imgage = ImageIO.read(socket.getInputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(imgage, format, baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
而且我得到以下錯誤:
java.lang.IllegalArgumentException: image == null!
我先前手動讀取所有字節。我收到了這張照片,但是一開始有一些字節丟失(大約7000)。
如何讓它工作?
我們受到限制,根本無法使用Http。 – pikaille