เนื่องจากนักพัฒนา Android แนะนำให้ใช้HttpURLConnection
คลาสนี้ฉันจึงสงสัยว่าจะมีใครสามารถให้ตัวอย่างที่ดีเกี่ยวกับวิธีการส่ง "ไฟล์" บิตแมป (จริงๆแล้วเป็นสตรีมในหน่วยความจำ) ผ่าน POST ไปยังเซิร์ฟเวอร์ Apache HTTP ฉันไม่สนใจคุกกี้หรือการพิสูจน์ตัวตนหรืออะไรที่ซับซ้อน แต่ฉันแค่ต้องการให้มีการใช้งานที่เชื่อถือได้และมีตรรกะ ตัวอย่างทั้งหมดที่ฉันได้เห็นในที่นี้ดูเหมือนว่า "ลองดูสิแล้วอาจจะได้ผล"
ตอนนี้ฉันมีรหัสนี้:
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://example.com/server.cgi");
urlConnection = (HttpURLConnection) url.openConnection();
} catch (Exception e) {
this.showDialog(getApplicationContext(), e.getMessage());
}
finally {
if (urlConnection != null)
{
urlConnection.disconnect();
}
}
โดยที่ showDialog ควรแสดงAlertDialog
(ในกรณีที่ URL ไม่ถูกต้อง?)
ตอนนี้สมมติว่าฉันสร้างบิตแมปดังนี้: Bitmap image = this.getBitmap()
ภายในการควบคุมที่ได้มาจากView
และฉันต้องการส่งผ่าน POST อะไรคือขั้นตอนที่เหมาะสมเพื่อให้บรรลุสิ่งนั้น? ต้องใช้คลาสอะไรบ้าง? ฉันสามารถใช้HttpPost
เหมือนในตัวอย่างนี้ได้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะสร้างInputStreamEntity
บิตแมปของฉันได้อย่างไร ฉันพบว่ามันน่ารังเกียจที่จะต้องเก็บบิตแมปไว้ในไฟล์บนอุปกรณ์ก่อน
ฉันควรพูดถึงว่าฉันจำเป็นต้องส่งทุกพิกเซลที่ไม่มีการเปลี่ยนแปลงของบิตแมปดั้งเดิมไปยังเซิร์ฟเวอร์ดังนั้นฉันจึงไม่สามารถแปลงเป็น JPEG ได้