webForumDet fria alternativet

Wapkod fel?

Webbutveckling

15 svar · 605 visningar · startad av fredrik99

Medlem sedan maj 2000426 inlägg
Frågan#1

Kan någon säga mig varför inte denna simpla kod inte funkar i min waptelefon?

Koden funkar kanon på gelon.net :)

index.wml

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="main" title="Default">
<p>
Fraser<br/><br/>
<a href="default_s.asp">Länktest</A><br/>

</p>
</card>
</wml>
Medlem sedan juni 20022 599 inlägg
#2

</A>=</a>?

Medlem sedan maj 2000426 inlägg
#3

Tackar :e

Kan man använda filformatet *.asp på wap? Eller måste det vara *.wml?

Medlem sedan juni 20022 599 inlägg
#4

Du kan använda vilken filändelse som helst på servern. Det enda viktiga är
att du talar om för klienten (WAP-browsern/Gatewayen) vad det är som skickas.

I ASP gör du det genom att skriva

<%response.ContentType = "text/vnd.wap.wml"%>

.. allra överst din fil.

Medlem sedan maj 2000426 inlägg
#5

När jag besöker denna sidan via mobilen funkar den inte, men i gelon funkar den kanon.

Är jag blind idag? :OO

news.asp

<%response.ContentType = "text/vnd.wap.wml"%>

<%
Set Connect = Server.CreateObject("ADODB.Connection")
connect.open "Wapbas"
sql = "select top 15 * from nyheter order by id desc"
set rs=connect.execute(sql)
Datum=FormatDateTime(Now,2)
%>

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="main" title="Fredrik">

<p>
<%
if not rs.eof then
do until rs.eof
%>

<small>
<a href="news_spec.asp?id=<%=rs("id")%>"><%=rs("rubrik")%>, <i>(<%response.write day(rs("datum")) & "/" & month(rs("datum"))%>)</i></a><br/>
</small>

<%
rs.movenext
loop
end if
%>

</p>

<%
rs.close
set rs=nothing
connect.close
set connect=nothing
%>

</card>
</wml>
Medlem sedan juli 20013 378 inlägg
#6

Nejdå, men du genererar felaktig WML... ;)
I DTD:n du anger att du följer ( http://www.wapforum.org/DTD/wml_1.1.xml ) står:

<!ELEMENT a ( #PCDATA | br | img )*>

vilket betyder att det enda som får stå mellan <a> och </a> är kombinationer av text, <br /> eller <img />...

Du får alltså inte använda <i> inom <a> sådär...

Wap-nallefoner (och Gateways etc) kräver att koden är 100% korrekt för att ens bry sig om att försöka presentera något...

Gelon är nog bra för att visa upp WAP-sidor, men eftersom de inte kontrollerar att din kod är korrekt, utan bara "gör det bästa av situationen" som vilken webbläsare som helst - så rekommenderar jag att man alltid kollar sin WML-kod i en XML-redigerare innan man kollar på Gelon... (WML är ju ett XML-baserat format)...

Eller att man använder verktygen i SDK:n för den telefon du vill använda för att titta på sidan...

Eller att man slangar ut wml-sidan som "text/xml" istället för som "text/vnd.wap.wml" och kollar på den i en nyare Explorer (den validerar XML-kod numera)

Bra (och gratis) xml-redigerare du kan använda för valideringen: http://xmlcooktop.com

Medlem sedan maj 2000426 inlägg
#7

Jag har försökt att följa wml-standarden, men får ändå inte koden att fungera. Får samma fel msg som innan :(

Det är kanske någon som ser ljuset i tunneln, eller i alla fall ett mötande tåg? :e :e

<%
Response.ContentType = "text/vnd.wap.wml" 
startdag = Date() - Weekday(Date(), 2)+1
slutdag = Date() - Weekday(Date(), 2) + 7
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "event"
SQLStmt = "SELECT * From kalender WHERE datum BETWEEN #" & startdag & "# AND #" & slutdag & "# ORDER BY datum ASC"
Set RS = Connect.Execute(SQLStmt)
Dim kalender()
redim kalender(7,1)
dim i
i = 0
Do while not RS.EOF 
If i = 0 then
kalender(i,0) = rs("Datum")
kalender(i,1) = rs("Aktivitet")
i = i+1
else
if kalender(i-1,0) = rs("Datum") then
kalender(i-1,1) = kalender(i-1,1) &"<b>,</B><br>"& rs("Aktivitet")
else
kalender(i,0) = rs("Datum")
kalender(i,1) = rs("Aktivitet")
i = i+1
end if
end if
RS.Movenext
Loop
Function Check_dag(datum)
Check_dag = ""
for j = 0 to UBound(kalender)
if Datediff("d",datum,kalender(j,0)) = 0 then
Check_dag = j
end if
next
end function
%>

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
   <card id="main" title="Event"
      <p>
         <small>Vecka <%=DatePart("ww", Date(), 2, 2)%>
         <br/>

         (<%=Day(startdag)%>/<%=Month(startdag)%>-<%=Day(slutdag)%>/<%=Month(slutdag)%>) 
         <br/>

         <br/>

         <%
         akt_datum = CDate(startdag)
         for k = 0 to Datediff("d",startdag,slutdag)
         temp_chk = Check_dag(akt_datum)
         Dagnamn = WeekdayName(Weekday(akt_datum))
         Dagnamn = UCase(Mid(Dagnamn,1,1)) & Mid(Dagnamn,2,10)
         Dag1 = Left(Dagnamn, 3)
         %><%If  temp_chk <> "" then%>
         <b>
            <%=Dag1%>
         </b>

         <br/>

         <%=kalender(temp_chk,1)%><%else%>
         <b>
            <%=Dag1%>
         </b>

         <%end if%>
         <br/>

         <%akt_datum = Dateadd("d",1,akt_datum)%><%next%>
         </small>

         <%
         RS.Close
         Connect.Close
         %>
      </p>
   </card>
</wml>
Medlem sedan juli 20013 378 inlägg
#8

Raden

<card id="main" title="Event"

ser inte helt komplett ut ;)

Medlem sedan maj 2000426 inlägg
#9

jarvklo>> Fortfarande samma fel-msg :(

Medlem sedan juli 20013 378 inlägg
#10

Hmmm....
Vad säger felmeddelandet exakt?
Hur ser den genererade koden ut?
Hur stor blir filen?
Vilken nallefon använder du för att testa?

Medlem sedan maj 2000426 inlägg
#11

Ursäkta att svaret har dröjt, har uppstått en del komplikationer.

Vad säger felmeddelandet exakt?
"Bad answer from origin server"

Hur ser den genererade koden ut?
HTML-koden hämtad från gelon.net

<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0">
<TR>
    <TD class="thedeck">
	<font face="Arial" size="2" class="thedeck">
   <p><small>Vecka 49<br>
 (2/12-8/12) <br>
<br>
<b>Mån</b><br>
 <a href="/cgi-bin/ericsson.cgi?url=http://www.server.se" onclick="loading()"  class="wlink" >Gympa</a> <br>
<b>Tis</b><br>
<b>Ons</b><br>
<b>Tor</b><br>
<b>Fre</b><br>
<b>Lör</b><br>
 <a href="/cgi-bin/ericsson.cgi?url=http://www.server.se" onclick="loading()"  class="wlink" >Löpträning</A> <br>
<b>Sön</b><br>
 <a href="/cgi-bin/ericsson.cgi?url=http://www.server.se" onclick="loading()"  class="wlink" >Advent</a> <br>
</small></p> 
</font>
</TD>
</TR>
</TABLE>

Vilken nallefon använder du för att testa?
Nokia 6510

Medlem sedan juli 20013 378 inlägg
#12

Hmm...
Svårt att säga vad som är fel när man inte ser WAP-koden utan bara Gelons översättning till HTML...

Du har ingen länk till sidan direkt så att man kan testa originalet?

Medlem sedan maj 2000426 inlägg
#13

Visst :e

http://www.ringsjo.nu/wap/event.asp

Medlem sedan juli 20013 378 inlägg
#14

Ok. En snabbkoll hittade följande småsaker som var och en för sig skulle kunna vara orsaken:

  1. Du har ett </A> på ett ställe - skall vara </a>
  2. Du har ett *gäng* blanktecken/blankrader före <?xml?> - kan vara ett problem
  3. Du måste se över din teckenkodning. ö i "Ringsjö OK" verkar vara kodat i Unicode, resten av alla åäö är kodat i något annat.
  4. Du måste ange teckenkodning i <?xml?>-taggen. t.ex.
<?xml version="1.0" encoding="ISO-8859-1" ?>

om det inte är Unicode du vill köra med. ;)

Medlem sedan maj 2000426 inlägg
#15

Tackar :e

En lite grej innan vi stänger ner denna tråden.
Får man inte skriva så här, enligt wml- standarden?

<%IF NOT rs("text1")= "" THEN%>
<br/>
<%=rs("text1")%>
<%end if%>

Bad answer from origin server :x

Medlem sedan juli 20013 378 inlägg
#16

Svårt att säga...
Om den resulterande WML-koden är korrekt beror helt på om du får ha ett <br/> just där i den resulterande koden och vad som råkar finnas i rs("text1")...

264 ms totalt · 3 externa anrop · v20260731065814-full.a4a6ad0e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)