2011-09-28 10 views
16

Vorrei inviare un modulo di posta con java su un sito web. Mi sono inventato questo, ma non ho intenzione di fare il prossimo o se questo è il modo giusto.Come inviare il modulo di posta con java?

URL url = new URL("http://127.0.0.1"); 
URLConnection conn=url.openConnection(); 
conn.setDoOutput(true); 
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
wr.write(data); 

il modulo di post assomiglia a questo.

<form action="prikaz4.php" method="post"> 
    <select name="igralec"/> 
    <option value="Kobe Bryant">Kobe Bryant</option> 
    <option value="Dwayne Wade">Dwayne Wade</option> 
    <input type="submit" /> 
</form> 

risposta

25

è possibile scrivere codice simile a questo:

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.HttpException; 
import org.apache.commons.httpclient.HttpStatus; 
import org.apache.commons.httpclient.methods.PostMethod; 
import org.apache.http.impl.client.HttpClients; 

public class PostReqEx { 

    public void sendReq(String url,String email,String fname){ 
    HttpClient httpClient = HttpClients.createDefault(); 
    PostMethod postMethod = new PostMethod(url); 
    postMethod.addParameter("Email", email); 
    postMethod.addParameter("fname", fname); 
    try { 
     httpClient.executeMethod(postMethod); 
    } catch (HttpException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    if (postMethod.getStatusCode() == HttpStatus.SC_OK) { 
     String resp = postMethod.getResponseBodyAsString(); 
    } else { 
     //...postMethod.getStatusLine(); 
    } 
    } 
} 
+3

+1. Vorrei che le persone smettessero di reinventare la ruota. – pap

+0

Ho trovato la soluzione qui utile: http://stackoverflow.com/questions/36568518/testing-form-posts-through-mockmvc –

+0

Utilizzo di PostMethod non aggiornato per i comuni correnti (versione 4), utilizzare UrlEncodedFormEntity: https: // stackoverflow .com/a/8129350/1904815 – JonnyJD

1

Il progetto di Apache HttpClient gestirà meglio questo per voi.

o si può provare questo codice:

// Using java.net.URL and 
  //java.net.URLConnection 
  URL url = new URL("http://jobsearch.dice.com/jobsearch/jobsearch.cgi"); 
  URLConnection connection = url.openConnection(); 
  connection.setDoOutput(true); 
  OutputStreamWriter out = newOutputStreamWriter(uc.getOutputStream(), "8859_1"); 
  out.write("username=bob&password="+password+""); 
  // remember to clean up 
  out.flush(); 
  out.close(); 
Problemi correlati