08. december 2004 - 12:15
Der er
31 kommentarer og 3 løsninger
MIDlet problem.
Hvad er det forkert i min kode til at sende variabler via mobilen ? Her er et udsnit af min php side der skal modtage variablerne var1 og var2. De hedder det samme i min mobil program! Hvordan får jeg sendt mine variabler fra mobil til hjemmesiden ? Mangler jeg noget i min java kode ? Hvilken linie afsender de info jeg vælger? ---------------------- PHP kode på hjemmeside der modtager info. ---------------------- $var1 = $_REQUEST["var1"]; $var2 = $_REQUEST["var2"]; bla bla bla.... ----------------------- java kode i mobil ----------------------- try{ c = (HttpConnection)Connector.open(Url); c.setRequestMethod(HttpConnection.POST); os = c.openOutputStream(); os.write(("VAR 1 ="+var1).getBytes()); os.write(("VAR 2 ="+var2).getBytes()); os.flush(); len =c.getLength(); }
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
08. december 2004 - 12:31
#1
Havd med: os.write(("VAR1=var1&VAR2=var2).getBytes());
08. december 2004 - 12:32
#2
Hov: os.write(("VAR1=var1&VAR2=var2").getBytes());
08. december 2004 - 12:43
#3
virker ikke ! desværre... kan du ikke henvise til et eksempel på nettet hvor det står ?
08. december 2004 - 12:49
#4
Nej, det var bare en idé.
08. december 2004 - 17:24
#5
Du skal huske at sætte content-length.
08. december 2004 - 18:29
#7
har du et kode eksempel ?
08. december 2004 - 18:36
#8
jeg skal måske lige sige, at der oploader tomme felter til hjemmesiden!Så det virker ... næsten ... :-)
08. december 2004 - 20:17
#9
Hvad er der galt med denne mulighed ? (Er prøvet men virker ikke umiddelbart) try{ c = (HttpConnection)Connector.open(Url); c.setRequestMethod(HttpConnection.POST); c.setRequestProperty("Content-Length", ""+ var1.length() ); c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); c.setRequestProperty("Content-Language", "dk-DK"); c.setRequestProperty("Accept", "text/xml"); c.setRequestProperty("Connection", "close"); os = c.openOutputStream(); os.write(var1.getBytes()); len =c.getLength(); } + hvad gør: os.flush(); ???
08. december 2004 - 20:30
#10
Umiddelbart ville jeg sige at denne: c.setRequestProperty("Content-Language", "dk-DK"); skal være: c.setRequestProperty("Content-Language", "da-DK"); os.flush() tømmer din outputStream, altså sikrer alle data skrives Resten ved jeg intet om!
08. december 2004 - 20:36
#11
hvad mener du med at : alle data sikres ??? er det fint nok at den placeres til sidst ?
08. december 2004 - 20:45
#13
Glemte: os.flush(); Ja - placeres til sidst
08. december 2004 - 20:47
#14
han bruger os.writeByte(var1); Men det virker ikke... Det jeg prøvede i starten, sender jo info til siden, mensiden modtager bare tomme felter... kan det ikke hjælpe ?
08. december 2004 - 20:52
#15
Hmm - jeg ved ikke en dyt om det! Men han bruger: os = c.openDataOutputStream(); det gør du ikke Måske det, sammen med os.writeByte(var1);
08. december 2004 - 20:54
#16
Prøv at copy/paste den model han bruger og se hvad det giver!
09. december 2004 - 10:13
#17
Dette er svaret fra min emulator :-) Hvordan var det nu man løste den del? Det er jo fordi jeg binder "uploade" delen til en knap ... -------------------------------------------------- Warning: To avoid potential deadlock, operations that may block, such as networking, should be performed in a different thread than the commandAction() handler. --------------------------------------------------
09. december 2004 - 10:18
#18
hvordan bruger jeg "tråde" til at løse mit problem ?
09. december 2004 - 10:41
#19
Lav en ny klasse der implementerer "Runnable" public class KlasseNavn implements Runnable { public boolean runThread=true; public void run() { while (runThread) { // Din kode her } } } .. så længe runThread er true udføres din kode. Sættes runThread til false dør/exiter tråden. /brian
09. december 2004 - 10:43
#20
Nå ja, du skal selvfølgelig huske at instantiere/starte tråden i din main klasse: Thread t=new Thread() t.start();
09. december 2004 - 10:50
#21
hehe... A Solution public void commandAction(Command c, Displayable s) { if (c == mConnectCommand) { Thread t = new Thread() { public void run() { connect(); // METODE KALDET ! } }; t.start(); } } tror jeg kan klare tråd problemt, men hvordan importere jeg det ? hvad med : ... extends MIDlet,Thread implements CommandListener { ????
09. december 2004 - 11:16
#22
Burde være et forsøg værd - husk dog at implementere runnable.
09. december 2004 - 11:58
#23
Gosh, man skulle tro det er mandag :-) Ovenstående tråd burde virke - glem bemærkningen om runnable :-)
09. december 2004 - 18:50
#24
Det virker næsten... Jeg kan nu køre metoden via en knap, men der kommer stadig ingen værdier ind i databasen på hjemmesiden! Nogen ideer ? Der oprettes kun tommefelter. Kan det have noget at gøre med at jeg sender to variabler?
09. december 2004 - 20:24
#25
Skal man ikke angive "length" for begge variabler? Hvordan ligger jeg dem sammen ? (var1+var2).length ? Hvor vigtigt er det? Tæller det hvor meget der skal afsendes? c.setRequestProperty("Content-Length", "\""+ var1.length()+"\"" );
09. december 2004 - 20:26
#26
skal text/xml være text/html ? tænker på: c.setRequestProperty("Accept", "text/xml");
09. december 2004 - 20:48
#27
c.setRequestProperty("Content-Length", "\""+ (var1.length()+ var1.length()) + "\"" ); text/html - ville jeg mene
09. december 2004 - 20:48
#28
c.setRequestProperty("Content-Length", "\""+ (var1.length()+ var2.length()) + "\"" );
10. december 2004 - 11:17
#29
Content-Type sættes til application/x-www-form-urlencoded Content-Length sættes til String postValues="var1="+var1+"&var2="+var2; c.setRequestProperty("Content-Length", postValues.length()); Herefter skriver du indholdet af postValues til din server.
11. december 2004 - 13:36
#30
Hvad gør jeg med denne del af koden ? ------------------------------------------------ os = c.openOutputStream(); os.write(var1.getBytes()); len =c.getLength(); ------------------------------------------------ os.write(var1.getBytes()+var2.getBytes()); eller ???
11. december 2004 - 13:56
#31
sådan ser den ud nu! public void SendInfo(String var1, String var2) { StringBuffer b = new StringBuffer(); HttpConnection c = null; OutputStream os = null; long len = 0 ; int ch = 0; try{ c = (HttpConnection)Connector.open(Url); c.setRequestMethod(HttpConnection.POST); c.setRequestProperty("Content-Length", "\""+ (var1.length()+ var2.length()) + "\"" ); c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); c.setRequestProperty("Content-Language", "da-DK"); c.setRequestProperty("Accept", "text/html"); c.setRequestProperty("Connection", "close"); os = c.openOutputStream(); os.write(("var1="+var1+"&var2="+var2).getBytes()); os.flush(); }
11. december 2004 - 14:43
#32
Kan det have noget at gøre med at tråden lukkes efter et angivet tid? Når jeg sætter den til at vibere i 1 sek inden metoden kaldes - når den kun at give en spjæt fra sig. (Har lavet programmet om til midp 2.0)
11. december 2004 - 16:45
#33
Nej - men læs hvad jeg skrev ovenfor ...! Din content-length fejler. Jeg ville lave følgende ændringer: 1) før 'try': String postValues="var1="+var1+"&var2="+var2; 2) din Content-Length erstattes med: c.setRequestProperty("Content-Length", Integer.toString(postValues.length())); 3) din os.write erstattes med: os.write(postValues.getBytes());
14. december 2004 - 10:24
#34
sådan, det var lige præcis det der manglede. Tusind tak. Nu virker det perfekt. Mange tak for hjælpen.
Kurser inden for grundlæggende programmering