2010-04-01 2 views
9
URL url = new URL("http://www.example.com/comment"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setDoOutput(true); 
connection.setRequestMethod("POST"); 

Èconnection.setRequestProperty e scrittura esplicita sull'urloutputstream sono gli stessi?

connection.setRequestProperty(key, value); 

lo stesso

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); 
writer.write("key=" + value); 
writer.close(); 

?

In caso contrario, correggimi.

risposta

12

No, non lo è. Il URLConnection#setRequestProperty() imposta una richiesta intestazione. Per le richieste HTTP è possibile trovare tutte le intestazioni possibili here.

Il writer scrive solo la richiesta corpo. In caso di POST con contenuto urlencoded, normalmente si scriverà la stringa di query nel corpo della richiesta anziché aggiungerla all'URI della richiesta come in GET.

Detto questo, connection.setDoOutput(true); già imposta implicitamente il metodo di richiesta di POST in caso di HTTP URI (perché è implicitamente richiesto di scrivere al corpo della richiesta allora), quindi facendo un connection.setRequestMethod("POST"); poi è inutile.