2011-09-28 17 views
16

Me gustaría enviar un formulario de publicación con java en un sitio web. Se me ocurrió esto, pero no sé qué hacer a continuación o si este es el camino correcto.¿Cómo enviar un formulario de publicación 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); 

la forma de publicación tiene este aspecto.

<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> 

Respuesta

25

puede escribir código similar a esto:

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. Desearía que la gente dejara de reinventar la rueda. – pap

+0

Encontré útil la solución aquí: http://stackoverflow.com/questions/36568518/testing-form-posts-through-mockmvc –

+0

El uso de PostMethod está desactualizado para los recursos comunes actuales (versión 4), use UrlEncodedFormEntity: https: // stackoverflow .com/a/8129350/1904815 – JonnyJD

1

El proyecto HttpClient de Apache se encargará de esto mejor para usted.

o puede probar este código:

// 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(); 
Cuestiones relacionadas