Wapkod fel?

Webbutveckling

15 svar · 671 visningar · startad av fredrik99

Medlem sedan maj 2000426 inlägg
Trådstart#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
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")...

259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)