2013-11-09 4 views
0

Я пытаюсь передать два параметра в URL в методе сообщений для соединения HTTP, но не получаешь никакого успеха может любой помочь мне код являетсякак передать несколько параметров в URL

URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

    // add request header 
    con.setRequestMethod("POST"); 
    con.setDoOutput(true); 
    con.setDoInput(true); 
    con.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 

    JsonObject requestData = new JsonObject(); 
    requestData.addProperty("email", "[email protected]"); 
    requestData.addProperty("name", "nitin malik"); 
    requestData.addProperty("phone_no", "9540825737"); 

    File fileToUpload = new File("/home/nitin/Desktop/clientdcs.jpg"); 

    String urlParameters = "form=" + requestData.toString() + "&file=" + fileToUpload; 

    // Send post request 
    DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 
+0

Не забудьте [ form-encode] (http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html#encode%28java.lang.String,%20java.lang.String%29) ваши данные : 'String urlParameters =" form = "+ URLEncoder.encode (requestData.toString()," UTF-8 ") +" & file = "+ URLEncoder.encode (fileToUpload," UTF -8 ");' – VGR

+0

URLEncoder.encode (fileToUpload, «UTF-8»); это не поддерживается для файла. –

+0

Измените его на 'URLEncoder.encode (fileToUpload.toString()," UTF-8 ")'. – VGR

ответ

0

Если вы хотите отправить содержимое файла, вы обычно хотите использовать multipart/form-data для вашего Content-Type.

Построение сообщение многочастному/форм-данных можно сделать с помощью библиотеки JavaMail:

MimeBodyPart formPart = new MimeBodyPart(); 
formPart.setContent(
    URLEncoder.encode(requestData.toString(), "UTF-8"), 
    "application/x-www-form-urlencoded"); 
formPart.setDisposition("form-data; name=\"form\""); 

MimeBodyPart filePart = new MimeBodyPart(); 
filePart.attachFile(fileToUpload); 
ContentDisposition disposition = new ContentDisposition("form-data"); 
disposition.getParameterList().set("name", "file"); 
disposition.getParameterList().set("filename", fileToUpload.toString(), "UTF-8"); 
filePart.setDisposition(disposition.toString()); 

MimeMultipart multipart = new MimeMultipart("form-data"); 
multipart.addBodyPart(formPart); 
multipart.addBodyPart(filePart); 

try (OutputStream out = con.getOutputStream()) { 
    multipart.writeTo(out); 
} 

Сервлет может читать данные формы с использованием метода getPart из HttpServletRequest:

Part formPart = request.getPart("form"); 
ByteBuffer buffer = ByteBuffer.allocate((int) formPart.getSize()); 
try (ReadableByteChannel in = 
     Channels.newChannel(formPart.getInputStream()) { 
    while (buffer.hasRemaining()) { 
     in.read(buffer); 
    } 
} 
String encoded = new String(buffer.array(), StandardCharsets.UTF_8); 
String form = URLDecoder.decode(encoded, "UTF-8"); 

Part filePart = request.getPart("file"); 
File sentFile = new File(filePart.getName()); 
File file = new File(downloadDirectory, sentFile.getName()); 
filePart.write(file.toString()); 
+0

для вашей поддержки –

Смежные вопросы