Hallo,
in meinem Programm habe ich Probleme mit der HTTP- GET- Verbindung. Mein Programm besteht aus mehreren Forms. Am Anfang habe ich alle in einem MIDlet erzeugt, das war aber schnell unübersichtlich.
Daher habe ich jetzt für jedes Form eine eigene Klasse. Jetzt geht aber auf einmal die HTTP- Verbindung nicht mehr und ich weiß nicht, wo mein Fehler liegt
Das Form, in dem die Verbindung aufgebaut, und wo auch die URL zusammengesetzt wird:
Der Thread, in dem die Verbindug aufgebaut werden soll:
Soweit der Quellcode. Ich weiß nicht recht, wo das Problem liegt. Das Einzige, was ich durch Debugging herausfinden konnte, ist, dass der GetThread als URI null bekommt und nicht den richtigen String.
Woran kann das liegen?
Für Hilfe bin ich sehr dankbar.
Gruß
AnonymXX
in meinem Programm habe ich Probleme mit der HTTP- GET- Verbindung. Mein Programm besteht aus mehreren Forms. Am Anfang habe ich alle in einem MIDlet erzeugt, das war aber schnell unübersichtlich.
Daher habe ich jetzt für jedes Form eine eigene Klasse. Jetzt geht aber auf einmal die HTTP- Verbindung nicht mehr und ich weiß nicht, wo mein Fehler liegt
Das Form, in dem die Verbindung aufgebaut, und wo auch die URL zusammengesetzt wird:
Java:
public class ChoiceForm extends Form implements ItemCommandListener{
private MIDlet midlet;
private GetThread getThread;
private ChoiceGroup cg2;
public String wahl=null;
private String URI;
private final String [] umkreise = {"1km", "5km", "10km"};
private final Command CMD_END = new Command("Ende", Command.EXIT, 1);
private final Command CMD_BACK = new Command("Zurück", Command.BACK, 1);
private final Command CMD_SEND = new Command("Senden", Command.ITEM, 1);
public ChoiceForm(MIDlet midlet){
super("App");
this.midlet = midlet;
cg2 = new ChoiceGroup("Sehenswürdigkeiten anzeigen: ", Choice.EXCLUSIVE, umkreise, null);
cg2.setItemCommandListener(this);
append(cg2);
cg2.addCommand(CMD_END);
cg2.addCommand(CMD_BACK);
cg2.addCommand(CMD_SEND);
}
public void commandAction(final Command c, final Item i) {
if(c == CMD_END) {
midlet.notifyDestroyed();
}
if (c==CMD_BACK){
Display.getDisplay(midlet).setCurrent(new OptionForm(midlet));
}
if (c==CMD_SEND){
//den GetThred initialisieren und starten
getThread = new GetThread(midlet);
getThread.start();
int index2 = cg2.getSelectedIndex();
wahl = cg2.getString(index2);
URI= "http://Servername/Beispiel.php?umkreis="+wahl+"&lonWert=49.4468&latWert=8.5708";
}
}
public String getURI() {
// TODO Auto-generated method stub
return URI;
}
}
Der Thread, in dem die Verbindug aufgebaut werden soll:
Java:
public class GetThread extends Thread {
public GetThread(MIDlet midlet) {
this.midlet = midlet;
}
public void interrupt(){
anhalten = true;
}
public void run(){
StringSeparator separator = new StringSeparator();
StringBuffer sbuf = new StringBuffer();
try{
//Verbindung aufbauen
choice = new ChoiceForm(midlet);
hc = (HttpConnection) Connector.open(choice.getURI());
httpCode = hc.getResponseCode();
is = hc.openInputStream();
byte[] haeppchen = new byte[4096];
int dieAnzahl;
//String vom Server einlesen
while (!anhalten && (dieAnzahl = is.read(haeppchen))>0){
sbuf.append(new String(haeppchen, 0, dieAnzahl));
}
//Speicher für Array reservieren
ergebnis=new String[30][10];
/* Der String soll erst nach $ und dann nach , gesplittet werden
* sbuf: die Serverantwort. Wird dem String eingabe1 zugewiesen
* die Methode "split" wird zweimal aufgerufen und die aufgeteilten
* Strings in das Array "ergebnis" geschrieben.
*/
String eingabe1=sbuf.toString();
Vector vec1=separator.split(eingabe1,"§");
for(int i=0;i<vec1.size();i++)
{
//ergebnis[i][0]=(String)vec1.elementAt(i);
Vector vec2=separator.split((String)vec1.elementAt(i),",");
for(int j=0;j<vec2.size();j++)
{
ergebnis[i][j]=(String)vec2.elementAt(j);
}
}
/* das Array wird dem Hauptprogramm übergeben! Diese Übertragung geht ohne
* Probleme. Das Hauptprogramm bekommt die richtigen Werte und kann diese Anzeigen!
*/
result.ergebnisAnzeigen(ergebnis);
}
catch(Exception e){
}
finally{
try{
if (is != null){
is.close();
}
}
catch (IOException e){}
try {
if(hc != null){
hc.close();
}
}
catch (IOException e){}
}
}
private HttpConnection hc = null;
private InputStream is = null;
private int httpCode = 0;
private MIDlet midlet;
private ChoiceForm choice;
private ResultForm result;
private boolean anhalten = false;
public String[][] ergebnis;
public String ausgabe;
Soweit der Quellcode. Ich weiß nicht recht, wo das Problem liegt. Das Einzige, was ich durch Debugging herausfinden konnte, ist, dass der GetThread als URI null bekommt und nicht den richtigen String.
Woran kann das liegen?
Für Hilfe bin ich sehr dankbar.
Gruß
AnonymXX