Just nu i M3-nätverket
Gå till innehåll

Hämta xml data trots att webserverns header svarar http status.


tonlof

Rekommendera Poster

Hej, har en fungerande funktion för att läsa av xml-data men när webservern lämnar en felbeskrivning på xml skickar den troligen även samma felkod i headern vilket gör att xml-parsen får spel och inte kan gå vidare. Jag vill alltså strunta i serverns felkod och bara läsa av xml texten.

 

Jag läser in med XmlDocument.

 

Dim xmlDoc As New XmlDocument

xmlDoc.Load(Str_url)

+Kod för behandling...

Allt funkar alltså bra tills samma webbserver svarar med ett felmeddelande.

 

Går jag in på url:en från t.ex mozilla visas texten perfekt

<?xml version="1.0" encoding="UTF-8"?>

<notification>

<error code="401">Invalid API key(s).</error>

</notification>

 

Detta kan jag får ut av http://web-sniffer.net/

post-44429-0-92742200-1309030520_thumb.png

 

 

Tacksam för hjälp i rätt riktning.

Länk till kommentar
Dela på andra webbplatser

Http 401 betyder att du inte får hämta filen. Så även om du skulle ignorera statuskoden så skulle du antagligen inte få själva filen. Du får istället ett meddelande som säger att du inte har rätt att hämta filen.

 

Invalid API-Key låter som att du har angivit fel nyckel i url. Är du säker på att du formatterat din länk korrekt?

Länk till kommentar
Dela på andra webbplatser

Http 401 betyder att du inte får hämta filen. Så även om du skulle ignorera statuskoden så skulle du antagligen inte få själva filen. Du får istället ett meddelande som säger att du inte har rätt att hämta filen.

 

Invalid API-Key låter som att du har angivit fel nyckel i url. Är du säker på att du formatterat din länk korrekt?

 

Hej och tack, felkoderna är jag insatta i,

api felet var enklaste sättet att simulera ett felmeddelande från servern. Vilket kunde ha varit något helt annat 4xx.

I deras api listar dom möjliga fel som returneras tillbaka i ett xml-flöde men jag fattar inte varför dom har med felmeddelandet i headern i och med att det blockar inläsning från vb.net. Skriver jag in hela url:en i en browser visas ju xml-koden klart o tydligt oavsett vilket fel som rapporteras men att jag inte får det o funka med vb.net fattar jag inte.

Länk till kommentar
Dela på andra webbplatser

När en statuskod förutom 200 OK eller 302 Redirect kommer ned till en HttpWebRequest så kastas en exception. Vilket är rimligt då det i flera fall är fel. I fallet 304 Not Changed är det inte lika rimligt. Men det gör så.

 

Så skapa en HttpWebRequest. Gör en Try/Catch runt GetResponse, ta hand om exceptionens Response egenskap.

 

Exempel i låtsas VB, för jag har inte kodat VB på flera år. Men du kanske förstår ungefär vad som skall göras. Du kan helt enkelt inte använda XmlDocuments metoder för där kan du inte fånga WebException... Tror jag.

Try
var response = request.GetResponse() 'Detta är antagligen fel, för man måste casta
Catch ex as WebException
If ex Is Nothing Then
Throw
End If
Return ex.Response
End Catch

Länk till kommentar
Dela på andra webbplatser

Tackar, nu fick jag inga felkörningar i skriptet och kan avläsa serverns fel kod och orsak men jag lyckas fortfarande inte avläsa serverns xml-resultat som innehåller viktig information. Antagligen för att exception fångar upp serverfelet och inte läser innehållet i responsen.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...