# Nachfrage zu der genauen funktion folgendes codes



## d3x84 (15. Sep 2009)

```
public String read() throws IOException {
        if (con == null) {
            con = sitepath.openConnection();
        }
        InputStream in = con.getInputStream();
        int c = 0;
        StringBuffer incoming = new StringBuffer();
        while (c >= 0) {
            c = in.read();
            incoming.append((char) c);
        }
        return incoming.toString();
```

Bei meiner suche nach tutorials wie man eine verbindung mit einem server via post
herstellt bin ich auf ein sehr gut verständliches gestoßen.
Allerdings ab InputStream verstehe ich leider nicht genau was passiert,
da der Author die methoden wie read und append bzw. InputStream / StringBuffer nicht erklärt.

wäre für eine erklärung sehr dankbar


----------



## tfa (15. Sep 2009)

Die Dokumentation für Klassen bzw. Methoden aus der Java-API findest du hier:
Java Platform SE 6


----------



## tuxedo (15. Sep 2009)

```
InputStream in = con.getInputStream();
        int c = 0;
        StringBuffer incoming = new StringBuffer();
        while (c >= 0) {
            c = in.read();
            incoming.append((char) c);
        }
        return incoming.toString();
```

Was ist daran so schwer?

Zeile 1: InputStream holen
Zeile 2: temporäre Variable zum einlesen einen einzelnen Characters anlegen
Zeile 3: Einen StringBuffer anlegen in den man die gelesenen Zeichen stecken kann
Zeile 4-7: Zeichen für Zeichen vom Stream lesen und dem StringBuffer anhängen
Zeile 8: Den kompletten String-Inhalt des StringBuffers zurückgeben


----------



## d3x84 (15. Sep 2009)

tfa... danke die antwort kenne ich schon...

das problem ist das die docu in dipl informatiker englisch geschrieben ist und genau wie viele bücher nur schwer verständlich ist.
daher frage ich hier in der hoffnung eine erklärung zu bekommen denn eine erklärung ist z.B.
setDoOutput(true);
Lässt den ausgehen datenstrom zu.

auf der java seite steht dann

setDoOutput(boolean); awaits a boolean value (true/false)

versteht ihr was ich meine?


----------



## maki (15. Sep 2009)

> das problem ist das die docu in dipl informatiker englisch geschrieben ist


Das ist kein Problem, das ist die Realität.
Am besten du gewöhnst dich schnell daran


----------



## tuxedo (15. Sep 2009)

> danke die antwort kenne ich schon...



Wie? Erst fragen und dann die Antwort doch schon kennen?



> das problem ist das die docu in dipl informatiker englisch geschrieben ist und genau wie viele bücher nur schwer verständlich ist.



Wäre möglich ja. 


> daher frage ich hier in der hoffnung eine erklärung zu bekommen denn eine erklärung ist z.B.
> setDoOutput(true);
> Lässt den ausgehen datenstrom zu.
> 
> ...



Ne, versteh ich nicht. Deine letzte Frage passt nicht zur der, die du ursprünglich gestellt hast. Ich gehe also davon aus dass es sich heir um das nächste Problem handelt?



> setDoOutput(true);
> Lässt den ausgehen datenstrom zu.



Korrekt. "setDoOutput" ist ein Methodenaufruf der, je nachdem welcher Wert (true oder false) ihm mitgegeben wird, den ausgehenden Datenstrom zulässt oder nicht.



> setDoOutput(boolean); awaits a boolean value (true/false)



Und wo liegt jetzt genau dein Problem? Lass mich mal mutmaßen: 
Du wunderst dich dass da einmal steht man soll "true" oder "false" reingeben, und dann steht da auch noch was von "boolean" was dann gar nicht mehr so ins Bild passt, da man ja nur "true" oder "false" angeben soll?

Wenn ich mit meiner Mutmaßung richtig liege, dann - sei mir bitte nicht böse - solltest du dir dringend ein Buch zulegen dass dir die Grundlagen der Programmierung näher bringt und dir aufzeigt, dass Boolsche Variablen entweder "true" oder "false" sein können. 

Sollte ich nicht richtig liegen, so wirst du nicht drum rumkommen zu erklären wo dein Problem nun genau liegt.

- Alex


----------



## d3x84 (15. Sep 2009)

tuxedo hat gesagt.:


> ```
> InputStream in = con.getInputStream();
> int c = 0;
> StringBuffer incoming = new StringBuffer();
> ...





Vielen Dank =)
nur eine kleine frage hab ich noch...

c=in.read();


c ist eine variabl vom typ int mit wert 0

in ist eine con.getInputStream instanz.

was macht aber read?

liest es die werte von con.getInputStream aus?
weil dann muss der rückgabewert ja ein int sein?
aber ich denke getinputStream nimmt die "eingehenden daten" auf also zb ein string... bin verwirrt ^^


----------



## SlaterB (15. Sep 2009)

ein einzelnes Zeichen, ein char, ist ein Zahlwert


----------



## d3x84 (15. Sep 2009)

tuxedo hat gesagt.:


> Wie? Erst fragen und dann die Antwort doch schon kennen?
> 
> 
> 
> ...



die antworten oben sind etwas versetzt
als du mir geantwortet hast aheb ich gerade auf die antwort von tfa geantwortet.

und seine antwort ist zwar okay aber nicht das was ich  wollte

er hätte genauso antworten können "schau mal in die faq" weil da isn link auf die offizielle java sun docu

doch die ist wie ich schon gesagt habe sehr viel schwerer verständlich als wenn mir jemand normal hier im forum antwortet. denn die docu ist  dipl informatiker englisch.
d.h. die meisten haben da schon beim deutschen probleme geschweige denn das englische

daher auch die beiden beispiele

weil beispiel 1 -> so antwortet ein normal denkender mensch der verstanden hat was er tut.
beispiel 2 -> so antwortet jemand der studiert hat und die antwort aus dem buch auswendig kennt.

Zitat vieler info studenten in einem end semester
"hey das ham wir im 3 semester gemacht... aber das hab ich erfolgreich...... vergessen. iiirgendwo hab ich das noch muss mal sehen wo das is dann kann ichs dir geben"

das ist der unterschied zwischen beispiel 1 und beispiel 2


PS:
die informatiker die wirklich verstehen was sie da tun UND verstehen kenne ich sehr viele. die wenigsten davon gehn allerdings mit mir einen trinken......
Einem z.B. macht es mir spaß md5 verschlüsselungen zu lesen und im kopf rück zu rechnen wie der schlüssel ist...


----------



## d3x84 (15. Sep 2009)

SlaterB hat gesagt.:


> ein einzelnes Zeichen, ein char, ist ein Zahlwert




der ascii zahlenwert oder was is gemeint?


----------



## SlaterB (15. Sep 2009)

testen?


----------



## Beni (15. Sep 2009)

Es geht ja das Gerücht um, dass Informatiker nicht wie normale Menschen denken... 

Im Falle von "in.read()" wird genau ein byte gelesen und zurückgegeben, ob du das als ASCII-Zeichen, als Teil einer IP-Addresse oder als Abkürzung für Teddybär interpretierst ist dir selbst überlassen (gewisse Interpretationen haben allerdings mehr Sinn als andere...). In diesem Fall könnte es ASCII sein, oder auch etwas wie UTF-8. Was es genau ist, steht überlicherweise im Dokument selbst (im meta-Tag, da steht etwas wie 'content="text/html; charset=UTF-8"').


----------



## d3x84 (15. Sep 2009)

Beni hat gesagt.:


> Es geht ja das Gerücht um, dass Informatiker nicht wie normale Menschen denken...
> 
> Im Falle von "in.read()" wird genau ein byte gelesen und zurückgegeben, ob du das als ASCII-Zeichen, als Teil einer IP-Addresse oder als Abkürzung für Teddybär interpretierst ist dir selbst überlassen (gewisse Interpretationen haben allerdings mehr Sinn als andere...). In diesem Fall könnte es ASCII sein, oder auch etwas wie UTF-8. Was es genau ist, steht überlicherweise im Dokument selbst (im meta-Tag, da steht etwas wie 'content="text/html; charset=UTF-8"').



ok dann bin ich eindeutig für den teddybär =)


----------

