में एक बुनियादी HTTP सर्वर उदाहरण मैं वर्गों है कि मेरी परियोजना Sceye-Fi, com.sun.net.httpserver
वर्गों है कि जावा 6 के साथ आते हैं का उपयोग करता है एक HTTP सर्वर, के लिए बहुखण्डीय अनुरोध को संसाधित से फोटो अपलोड प्राप्त करने के लिए लिखा है है एक Eye-Fi कार्ड।
यह फ़ाइल अपलोड (मल्टीपार्ट पोस्ट) के साथ मदद कर सकता है।
एक गैर बहुखण्डीय पोस्ट के लिए, अगर आप इस तरह कुछ करने के लिए की आवश्यकता होगी:
// determine encoding
Headers reqHeaders = exchange.getRequestHeaders();
String contentType = reqHeaders.getFirst("Content-Type");
String encoding = "ISO-8859-1";
if (contentType != null) {
Map<String,String> parms = ValueParser.parse(contentType);
if (parms.containsKey("charset")) {
encoding = parms.get("charset");
}
}
// read the query string from the request body
String qry;
InputStream in = exchange.getRequestBody();
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte buf[] = new byte[4096];
for (int n = in.read(buf); n > 0; n = in.read(buf)) {
out.write(buf, 0, n);
}
qry = new String(out.toByteArray(), encoding);
} finally {
in.close();
}
// parse the query
Map<String,List<String>> parms = new HashMap<String,List<String>>();
String defs[] = qry.split("[&]");
for (String def: defs) {
int ix = def.indexOf('=');
String name;
String value;
if (ix < 0) {
name = URLDecoder.decode(def, encoding);
value = "";
} else {
name = URLDecoder.decode(def.substring(0, ix), encoding);
value = URLDecoder.decode(def.substring(ix+1), encoding);
}
List<String> list = parms.get(name);
if (list == null) {
list = new ArrayList<String>();
parms.put(name, list);
}
list.add(value);
}
स्रोत
2011-05-04 22:11:35
आप URLDecoder को नाम क्यों नहीं पारित करते हैं? – ceving
@ सेविंग हां, नाम भी यूआरएल-डीकोड किया जा सकता है –