2011-09-28 10 views
16

Chciałbym wysłać formularz posta z java na stronie internetowej. Wpadłem na to, ale nie wiem, co robić dalej lub czy jest to właściwa droga.Jak wysłać formularz po 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); 

formularz posta wygląda tak.

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

Odpowiedz

25

Można pisać kodu podobnego do tego:

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. Chciałbym, żeby ludzie przestali ponownie wynajdować koło. – pap

+0

Znalazłem rozwiązanie tutaj pomocne: http://stackoverflow.com/questions/36568518/testing-form-posts-through-mockmvc –

+0

Korzystanie z PostMethod jest nieaktualne dla bieżących commons (wersja 4), użyj UrlEncodedFormEntity: https: // stackoverflow .com/a/8129350/1904815 – JonnyJD

1

Projekt Apache z HttpClient poradzi sobie z tym lepiej.

lub można spróbować ten kod:

// 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(); 
Powiązane problemy