Wie liest man einen HTTP-Input-Stream?

Lesezeit: 3 Minuten

Benutzer-Avatar
Dekan Blakely

Der unten eingefügte Code wurde von Javadocs übernommen HttpURLConnection.

Ich bekomme folgenden Fehler:

readStream(in) 

…da es keine solche Methode gibt.

Ich sehe dasselbe in der Klassenübersicht für URLConnection unter
URLConnection.getInputStream

Wo ist readStream? Das Code-Snippet ist unten angegeben:

 URL url = new URL("http://www.android.com/");   
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();   
    try 
    {     
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());     
        readStream(in);  <-----NO SUCH METHOD
    }
    finally 
    {     
        urlConnection.disconnect();   
    } 

Benutzer-Avatar
Emran

Versuchen Sie es mit diesem Code:

InputStream in = address.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder result = new StringBuilder();
String line;
while((line = reader.readLine()) != null) {
    result.append(line);
}
System.out.println(result.toString());

  • Der Effizienz halber result sollte auch ein StringBuffer-Objekt sein.

    – SD_Guru

    17. April 2013 um 19:00 Uhr

  • Ich würde vorschlagen, StringBuilder anstelle von StringBuffer zu verwenden, da Sie den zusätzlichen Synchronisierungsaufwand nicht benötigen.

    – Joa Ebert

    1. Oktober 2014 um 8:11 Uhr

  • StringBuilder ist gut mit Single-Thread-Betrieb zu verwenden. StringBuffer sollte verwendet werden, wenn mehrere Threads einen Dampf auf dasselbe Objekt lesen und schreiben!

    – Muhammad Babar

    18. Juni 2015 um 10:55 Uhr

  • Die Frage wurde speziell nach HttpURLConnection gestellt, die kein openStream() hat, daher bin ich mir nicht sicher, warum dies eine gute Antwort wäre

    – Amalgowinus

    15. Januar 2019 um 21:06 Uhr

Es sieht so aus, als ob die Dokumentation nur verwendet wird readStream() meinen:

Ok, wir haben Ihnen gezeigt, wie Sie den InputStream erhalten, jetzt kommt Ihr Code hinein readStream()

Sie sollten also entweder Ihre eigenen schreiben readStream() Methode, die das tut, was Sie ursprünglich mit den Daten machen wollten.

Spring hat dafür eine util-Klasse:

import org.springframework.util.FileCopyUtils;

InputStream is = connection.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileCopyUtils.copy(is, bos);
String data = new String(bos.toByteArray());

Benutzer-Avatar
anu

versuchen Sie diesen Code

String data = "";
InputStream iStream = httpEntity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(iStream, "utf8"));
StringBuffer sb = new StringBuffer();
String line = "";

while ((line = br.readLine()) != null) {
    sb.append(line);
}

data = sb.toString();
System.out.println(data);

ein vollständiger Code zum Lesen von einem Webservice auf zwei Arten

public void buttonclick(View view) {
    // the name of your webservice where reactance is your method
    new GetMethodDemo().execute("http://wervicename.nl/service.asmx/reactance");
}

public class GetMethodDemo extends AsyncTask<String, Void, String> {
    //see also: 
    // https://developer.android.com/reference/java/net/HttpURLConnection.html
    //writing to see:    https://docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html
    String server_response;
    @Override
    protected String doInBackground(String... strings) {
        URL url;
        HttpURLConnection urlConnection = null;
        try {
            url = new URL(strings[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            int responseCode = urlConnection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                server_response = readStream(urlConnection.getInputStream());
                Log.v("CatalogClient", server_response);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            url = new URL(strings[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    urlConnection.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null)
                System.out.println(inputLine);
            in.close();
            Log.v("bufferv ", server_response);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Log.e("Response", "" + server_response);
   //assume there is a field with id editText
        EditText editText = (EditText) findViewById(R.id.editText);
        editText.setText(server_response);
    }
}

1014980cookie-checkWie liest man einen HTTP-Input-Stream?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy