kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
Yatendra Goel
Yatendra Goel
Question

Cum de a trimite cereri HTTP în java?

În Java, Cum de a compune o cerere HTTP mesaj și trimite-l la un HTTP Server?

391 2009-08-31T22:31:10+00:00 9
Yatendra Goel
Yatendra Goel
Întrebarea editată 8 august 2014 в 3:03
Programare
http
java
html
httpwebrequest
Popular videos
Java Tech Talk: Telegram бот на java за 1 час
Java Tech Talk: Telegram бот на java за 1 час
1 an în urmă
Comunicarea HTTP & HTTPS | Securitatea pe web
Comunicarea HTTP & HTTPS | Securitatea pe web
1 an în urmă
CS50 2014 - Week 9
CS50 2014 - Week 9
8 ani în urmă
Tehnologii Web - Curs 01 - HTTP
Tehnologii Web - Curs 01 - HTTP
1 an în urmă
Arhitectura client-server - Tutorial
Arhitectura client-server - Tutorial
2 ani în urmă
Java Tech Talk: Hand-made Spring Boot Starter
Java Tech Talk: Hand-made Spring Boot Starter
2 ani în urmă
Java tech talk: Spring Boot and GraphQl integration. Как сделать это просто?
Java tech talk: Spring Boot and GraphQl integration. Как сделать это просто?
1 an în urmă
8⃣0⃣ Ce este un Port si cum Functioneaza pe un Server ? 2⃣2⃣  | Invata Retelistica
8⃣0⃣ Ce este un Port si cum Functioneaza pe un Server ? 2⃣2⃣ | Invata Retelistica
5 ani în urmă
How to Send HTTP Request and Parse JSON Data Using Java
How to Send HTTP Request and Parse JSON Data Using Java
4 ani în urmă
JAVA- Send HTTP Get/Post Request and Read JSON response
JAVA- Send HTTP Get/Post Request and Read JSON response
5 ani în urmă
Cum iti faci un CV (perfect) pentru Angajare in 2022 | Europass vs One pager CV
Cum iti faci un CV (perfect) pentru Angajare in 2022 | Europass vs One pager CV
2 ani în urmă
Ce este HTTP? - Tutorial
Ce este HTTP? - Tutorial
2 ani în urmă
Send HTTP GET Request using Java 11 HttpClient and parse JSON response into objects
Send HTTP GET Request using Java 11 HttpClient and parse JSON response into objects
3 ani în urmă
TCP Sockets ☕️ Programare Java #11 👩🏻‍💻👨🏻‍💻
TCP Sockets ☕️ Programare Java #11 👩🏻‍💻👨🏻‍💻
2 ani în urmă
HTTP Request and Response Handling || SRKR || CSE || ZOOM RECORDING  || TELUGU
HTTP Request and Response Handling || SRKR || CSE || ZOOM RECORDING || TELUGU
2 ani în urmă
Friendzy: Laravel 8 API & Nuxt - Ep.#4 Friendships
Friendzy: Laravel 8 API & Nuxt - Ep.#4 Friendships
2 ani în urmă
Am descoperit CGI în HTML
Am descoperit CGI în HTML
1 an în urmă
Inside your computer - Bettina Bair
Inside your computer - Bettina Bair
9 ani în urmă
« Anterior
Următor »
Solution / Answer
 duffymo
duffymo
31 august 2009 в 10:35
2009-08-31T22:35:25+00:00
Mai mult
Sursă
Editează
#9429984

Puteți utiliza java.net.HttpUrlConnection.

Exemplu (de aici), cu îmbunătățiri. Inclus în caz de link-ul de putregai:

public static String executePost(String targetURL, String urlParameters) {
  HttpURLConnection connection = null;

  try {
    //Create connection
    URL url = new URL(targetURL);
    connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", 
        "application/x-www-form-urlencoded");

    connection.setRequestProperty("Content-Length", 
        Integer.toString(urlParameters.getBytes().length));
    connection.setRequestProperty("Content-Language", "en-US");  

    connection.setUseCaches(false);
    connection.setDoOutput(true);

    //Send request
    DataOutputStream wr = new DataOutputStream (
        connection.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.close();

    //Get Response  
    InputStream is = connection.getInputStream();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
    StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
    String line;
    while ((line = rd.readLine()) != null) {
      response.append(line);
      response.append('\r');
    }
    rd.close();
    return response.toString();
  } catch (Exception e) {
    e.printStackTrace();
    return null;
  } finally {
    if (connection != null) {
      connection.disconnect();
    }
  }
}
 artaxerxe
artaxerxe
Răspuns editat 11 octombrie 2019 в 8:03
HttpURLConnection (Java Platform SE 7 )
download.oracle.com
292
0
 Chi
Chi
31 august 2009 в 10:36
2009-08-31T22:36:12+00:00
Mai mult
Sursă
Editează
#9429985

De Oracle's java tutorial

import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL yahoo = new URL("http://www.yahoo.com/");
        URLConnection yc = yahoo.openConnection();
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}
 John
John
Răspuns editat 25 iulie 2014 в 4:20
222
0
 erickson
erickson
31 august 2009 в 10:38
2009-08-31T22:38:53+00:00
Mai mult
Sursă
Editează
#9429986

Știu că alții vor recomanda Apache's http-client, dar se adaugă complexitate (de exemplu, mai multe lucruri care pot merge prost), care este rareori justificată. Pentru o sarcină simplă, `java.net.URL-ul va face.

URL url = new URL("http://www.y.com/url");
InputStream is = url.openStream();
try {
  /* Now read the retrieved document from the stream. */
  ...
} finally {
  is.close();
}
69
0
Vineet Reynolds
Vineet Reynolds
31 august 2009 в 10:38
2009-08-31T22:38:54+00:00
Mai mult
Sursă
Editează
#9429987

Apache HttpComponents. Exemple pentru cele două module - HttpCore și HttpClient va obține ai început imediat.

Nu că HttpUrlConnection este o alegere proasta, HttpComponents va abstract o mulțime de plictisitoare codificare departe. Mi-ar recomanda acest lucru, dacă doriți cu adevărat pentru a sprijini o mulțime de servere HTTP/clienti cu minim de cod. Apropo, HttpCore ar putea fi utilizate pentru aplicații (clienti sau servere) cu minim de funcționalitate, întrucât HttpClient este de a fi utilizate pentru clientii care au nevoie de suport pentru mai multe schemele de autentificare, suport cookie etc.

55
0
Janus Troelsen
Janus Troelsen
14 iulie 2013 в 1:29
2013-07-14T13:29:08+00:00
Mai mult
Sursă
Editează
#9429991

Aici's un complet Java 7 program:

class GETHTTPResource {
  public static void main(String[] args) throws Exception {
    try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("http://tools.ietf.org/rfc/rfc768.txt").openStream())) {
      System.out.println(s.useDelimiter("\\A").next());
    }
  }
}

Noi încercăm-cu-resurse va auto-închidere, Scanner, care va auto-închide InputStream.

Janus Troelsen
Janus Troelsen
Răspuns editat 14 iulie 2013 в 2:57
25
0
Satish Sharma
Satish Sharma
27 iulie 2012 в 8:11
2012-07-27T08:11:59+00:00
Mai mult
Sursă
Editează
#9429989

Acest lucru vă va ajuta. Don't uitați să adăugați la BORCAN `HttpClient.jar la classpath.

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class MainSendRequest {

     static String url =
         "http://localhost:8080/HttpRequestSample/RequestSend.jsp";

    public static void main(String[] args) {

        //Instantiate an HttpClient
        HttpClient client = new HttpClient();

        //Instantiate a GET HTTP method
        PostMethod method = new PostMethod(url);
        method.setRequestHeader("Content-type",
                "text/xml; charset=ISO-8859-1");

        //Define name-value pairs to set into the QueryString
        NameValuePair nvp1= new NameValuePair("firstName","fname");
        NameValuePair nvp2= new NameValuePair("lastName","lname");
        NameValuePair nvp3= new NameValuePair("email","[email protected]");

        method.setQueryString(new NameValuePair[]{nvp1,nvp2,nvp3});

        try{
            int statusCode = client.executeMethod(method);

            System.out.println("Status Code = "+statusCode);
            System.out.println("QueryString>>> "+method.getQueryString());
            System.out.println("Status Text>>>"
                  +HttpStatus.getStatusText(statusCode));

            //Get data as a String
            System.out.println(method.getResponseBodyAsString());

            //OR as a byte array
            byte [] res  = method.getResponseBody();

            //write to file
            FileOutputStream fos= new FileOutputStream("donepage.html");
            fos.write(res);

            //release connection
            method.releaseConnection();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
}
14
0
 Tombart
Tombart
28 ianuarie 2014 в 2:33
2014-01-28T14:33:44+00:00
Mai mult
Sursă
Editează
#9429992

Google java http client a de frumos API pentru cereri http. Puteți adăuga cu ușurință JSON sprijin etc. Deși pentru o simplă cerere ar putea fi nejustificată.

import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import java.io.IOException;
import java.io.InputStream;

public class Network {

    static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();

    public void getRequest(String reqUrl) throws IOException {
        GenericUrl url = new GenericUrl(reqUrl);
        HttpRequest request = HTTP_TRANSPORT.createRequestFactory().buildGetRequest(url);
        HttpResponse response = request.execute();
        System.out.println(response.getStatusCode());

        InputStream is = response.getContent();
        int ch;
        while ((ch = is.read()) != -1) {
            System.out.print((char) ch);
        }
        response.disconnect();
    }
}
 Tombart
Tombart
Răspuns editat 10 februarie 2014 в 3:56
13
0
 laksys
laksys
24 decembrie 2012 в 2:08
2012-12-24T02:08:08+00:00
Mai mult
Sursă
Editează
#9429990

Puteți utiliza Priza pentru ca

String host = "www.yourhost.com";
Socket socket = new Socket(host, 80);
String request = "GET / HTTP/1.0\r\n\r\n";
OutputStream os = socket.getOutputStream();
os.write(request.getBytes());
os.flush();

InputStream is = socket.getInputStream();
int ch;
while( (ch=is.read())!= -1)
    System.out.print((char)ch);
socket.close();    
Craig Trader
Craig Trader
Răspuns editat 18 aprilie 2015 в 2:02
10
0
 tzik
tzik
6 martie 2011 в 1:07
2011-03-06T01:07:32+00:00
Mai mult
Sursă
Editează
#9429988

Nu's un mare link-ul despre a trimite o cerere POST aici de Exemplu Depot::

try {
    // Construct data
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
    data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");

    // Send data
    URL url = new URL("http://hostname:80/cgi");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(data);
    wr.flush();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
        // Process line...
    }
    wr.close();
    rd.close();
} catch (Exception e) {
}

Dacă doriți să trimiteți o cerere GET puteți modifica codul de ușor pentru a se potrivi nevoilor dumneavoastră. În mod special trebuie să adăugați parametrii în interiorul constructor de URL-ul. Apoi, comenta, de asemenea, acest wr.scrie(date);

Un lucru pe care'nu s-a scris și tu ar trebui să ai grijă de, este de timeout. Mai ales dacă doriți să-l folosească în WebServices, trebuie să setați timeout, altfel codul de mai sus va aștepta pe termen nelimitat sau pentru o foarte lungă perioadă de timp cel puțin și-l's ceva probabil nu't vrei.

Timeout-uri sunt setate astfel de comanda.setReadTimeout(2000);` parametrul de intrare este în milisecunde

 ThiefMaster
ThiefMaster
Răspuns editat 20 octombrie 2013 в 11:40
7
0
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
Daniel Gogov
Înregistrat 6 zile în urmă
2
工藤 芳則
Înregistrat 1 săptămână în urmă
3
Ирина Беляева
Înregistrat 2 săptămâni în urmă
4
Darya Arsenyeva
Înregistrat 2 săptămâni în urmă
5
anyta nuam-nuam (LapuSiK)
Înregistrat 2 săptămâni în urmă
BG
DE
EL
ES
FR
ID
IT
JA
KO
LV
NL
PT
RO
RU
SL
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire