webForumDet fria alternativet

Åtkomst nekad

ASP

19 svar · 629 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#1

Scriptet har inga problem med att skapa filen, men när den ska öppnas för att skriva i den så protesterar servern:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A0046)
Åtkomst nekad.
/ssk/ssk.asp, line 18

Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set xmlfile = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)

[b]testfile = fso.OpenTextFile(Server.MapPath("ssk.xml"),2)[/b]
Medlem sedan feb. 200112 078 inlägg
#2
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set xmlfile = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)

[b]set[/b] testfile = fso.OpenTextFile(Server.MapPath("ssk.xml"),2)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthopentextfile.asp

Medlem sedan feb. 200112 078 inlägg
#3

Nej, vänta lite nu.

Du har ju redan 'öppnat' filen på raden ovan, när du skapade den. Kör den raden som en sub istället (utan paranteser) och kör raden under som jag skrev den, så skall det fungera.

Alltså:

Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
[b]fso.CreateTextFile Server.MapPath("ssk.xml"), True

set testfile = fso.OpenTextFile(Server.MapPath("ssk.xml"),2)[/b]

RED. Alternativt kan du ju faktiskt skippa öppningen helt (tror jag):

Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
[b]set testfile = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)[/b]
Medlem sedan apr. 20012 427 inlägg
#4

Tackar så mycket! Men nu klagar den på nästa rad, d.v.s. där jag ska skriva xml-strängen till textfilen. Går jag verkligen rätt tillväga? Finns det ett enklare sätt att kopiera en XML-fil från en server till en annan?

Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set sskxml = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)
[b]sskxml.Write(xmlstring)[/b]

Feltyp:
Körningsfel i Microsoft VBScript (0x800A0005)
Ogiltigt proceduranrop eller argument.
/ssk/ssk.asp, line 17

Medlem sedan feb. 200112 078 inlägg
#5
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set sskxml = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)
[b]sskxml.Write xmlstring[/b]

Kanske?

Medlem sedan apr. 20012 427 inlägg
#6

Nej, jag får fortfarande samma fel. Jag försökte splitta xml-strängen och lägga in xml:en rad för rad med WriteLine, men det är samma fel där (Ogiltigt proceduranrop eller argument).

Medlem sedan jan. 20032 285 inlägg
#7
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set sskxml = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)
[b]sskxml.Close
Set sskxml = Nothing

Set sskxml = fso.OpenTextFile(Server.MapPath("ssk.xml"), 8)[/b]
sskxml.WriteLine(xmlstring)

Kanske?

Medlem sedan apr. 20012 427 inlägg
#8

Samma fel. :)

Medlem sedan jan. 20032 285 inlägg
#9

Har redigerat massa i min kod... Testa igen ;) (Om du nu inte testade med det som det är nu förståss)

Medlem sedan apr. 20012 427 inlägg
#10

Här är koden jag försöker med nu. Det märkliga är att det fungerar att köra

sskxml.WriteLine arrXML(0)
sskxml.WriteLine arrXML(1)
sskxml.WriteLine arrXML(2)

... o.s.v. men inte att loopa igenom som jag gör nedan.

<%
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
arrXML = Split(objXMLHTTP.ResponseText,vbCrLF)
Set objXMLHTTP = Nothing

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set sskxml = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)
Set sskxml = Nothing

Set sskxml = fso.OpenTextFile(Server.MapPath("ssk.xml"), 8)

For i = 0 To UBound(arrXML)
	sskxml.WriteLine arrXML(i)
Next

sskxml.Close
Set sskxml = Nothing
Set fso = Nothing
Medlem sedan jan. 20032 285 inlägg
#11

Får du samma felmeddelande som förrut?

Medlem sedan apr. 20012 427 inlägg
#12

Jepp. Nu testade jag precis här hemma och nu skapas xml-filen och den innehåller de fyra första raderna av original-xml-filen, men sedan tar det stopp:

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument

Kan det finnas tecken i XML-koden som pajar skriptet?

Medlem sedan apr. 20012 427 inlägg
#13

Uppdatering: Det är endast vissa rader från xml-filen som genererar felet och jag misstänker att dessa rader innehåller något tecken som inte gillas av skriptet. Vad som är märkligt är att XML:en jag får inte alls ser ut som den i originalfilen.

Så här ser de fem första raderna i originalfilen ut:

<?xml version="1.0" encoding="ISO-8859-1"?>
<SSKNYHETER>
  <NYHET>
    <DATUM>2003-03-24</DATUM>
    <RUBRIK>[b]SSK söker publikvärdar![/b]</RUBRIK>

Och så här ser XML:en som jag får från skriptet ut:

<?xml version="1.0" encoding="ISO-8859-1"?>
<SSKNYHETER>
  <NYHET>
    <DATUM>2003-03-24</DATUM>
    <RUBRIK>[b]SSK s? publikv?ar![/b]</RUBRIK>

Det verkar som om det är åäö som spökar.

Medlem sedan juni 200032 967 inlägg
#14

Ett känt problem, som fick mig att slänga iväg en snabb sökning. Fann detta.

Mvh

Medlem sedan apr. 20012 427 inlägg
#15

Kör jag min sträng genom funktionen som finns i det inlägget blir resultatet "<" och ingenting mer. Det kan ju omöjligen vara så här omständligt att spara ner en xml-fil från nätet med ASP. Kan någon förklara hur man normalt skulle göra så skulle jag uppskatta det eftersom jag ät total novis vad gäller XML i ASP. Det ligger alltså en xml-fil på en adress (exempelvis http://www.url.com/exempel.xml) som jag vill spara ner på min server med ASP. Hur gör jag? :)

Medlem sedan mars 20015 287 inlägg
#16

Var kallar du på den funktionen?

Samt har du en riktig länk till en fil man kan testa på?

Medlem sedan juni 20022 599 inlägg
#17

Varför gå över ån efter vatten?

<%
Set myXMLDoc = CreateObject("MSXML2.DOMDocument")
myXMLDoc.Load "http://www.url.se/nyheter.xml"
If myXMLDoc.parseError.errorCode = 0 Then
	Application.Lock
	myXMLDoc.save Server.MapPath("ssk.xml")
	Application.UnLock
else
	Response.write myXMLDoc.parseError.reason
End If
%>

Om nyheter.xml verkligen är ett välformulerat XML-dokument, vill säga.

Medlem sedan apr. 20012 427 inlägg
#18

Det var precis något sådant jag var ute efter, men tyvärr fungerar det inte för mig. XML-filen som sparas blir nämligen 0 KB.

Medlem sedan juni 20022 599 inlägg
#19

Kan tänka mig det. Glömde ett par rader:

myXMLDoc.async=false
myXMLDoc.setProperty "ServerHTTPRequest", true
myXMLDoc.Load "http://www.url.se/nyheter.xml"
Medlem sedan apr. 20012 427 inlägg
#20

Tack så mycket niko (och alla andra som försökt hjälpa mig)! Perfekt :)

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)