Avatar billede bluwduch Nybegynder
19. april 2004 - 13:21 Der er 11 kommentarer og
1 løsning

Eksekvere en web-side dagligt?

Hejsa

Jeg har et site, hvor der er en bestemt side der sender nogle emails ud. Er der en måde i .NET hvor man let kan eksekvere en side på denne måde? F.eks. sætte en browser ind og give den adressen?.

Jeg er ikke lige helt gået i gang med det endnu, så jeg har slet ikke kigget på mulighederne, og håber på at side med den rigtige metode når jeg går i gang med dette lille projekt :-D

Mvh
Daniel
Avatar billede arne_v Ekspert
19. april 2004 - 13:28 #1
En mulighed var at sende en HTTP POST request med (Http)WebRequest.
Avatar billede bluwduch Nybegynder
19. april 2004 - 13:31 #2
Cool! - Jeg skal bare bruge nogle muligheder - Så gives der point til den jeg ender med, som virker mest fornuftig :-D
Avatar billede arne_v Ekspert
19. april 2004 - 13:37 #3
Sig til hvis du skal have et kode eksempel på (Http)WebRequest
Avatar billede bluwduch Nybegynder
19. april 2004 - 13:40 #4
Det er altid velkomment!
Avatar billede arne_v Ekspert
19. april 2004 - 13:55 #5
Lidt skitseret kode:

        Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        req.Method = "POST"
        req.ContentType = "application/x-www-form-urlencoded"
        Dim post As StreamWriter = new StreamWriter(req.GetRequestStream)
        post.Write("field1=value1&field2=value2")
        post.Close()
        Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
        Dim stm As Stream = resp.GetResponseStream
        Dim c As Integer
        Dim more As boolean = true
        While (more)
            c = stm.ReadByte
            If (c >= 0) Then
                ' c is data
            Else
                more = false
            End If
        End While
        stm.Close
        resp.Close

[copy pastet fra 3 forskellige kilder, så check lige syntax]
Avatar billede arne_v Ekspert
19. april 2004 - 21:28 #6
Et komplet eksempel som er testet:

Imports System
imports System.IO
Imports System.Net

Module Main
    Sub Main()
        Dim url As String = "http://www.domain.dk/foobar.asp"
        Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        req.Method = "POST"
        req.ContentType = "application/x-www-form-urlencoded"
        Dim post As StreamWriter = new StreamWriter(req.GetRequestStream)
        post.Write("field1=value1&field2=value2")
        post.Close()
        Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
        Dim stm As Stream = resp.GetResponseStream
        Dim c As Integer
        Dim more As boolean = true
        While (more)
            c = stm.ReadByte
            If (c >= 0) Then
                Console.Write(Convert.ToChar(c))
            Else
                more = false
            End If
        End While
        stm.Close
        resp.Close
    End Sub
End Module
Avatar billede arne_v Ekspert
19. april 2004 - 21:28 #7
OK ?
Avatar billede bluwduch Nybegynder
20. april 2004 - 08:15 #8
Jeg finder lige lidt tid til at kigge på det i aften, så skal jeg nok vende tilbage ;-)
Avatar billede guidmaster Nybegynder
22. april 2004 - 12:20 #9
En mulighed kunne jo også være at lave dit eget httpmodule.

Her er et eks. som sender en mail hvert minut:
Imports System.Data.SqlClient
Imports System.Threading
Imports System.Web.Mail
Public Class MailSender
    Implements System.Web.IHttpModule

    Private Shared onemunite As Timer

    Public Sub Init(ByVal application As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
        If onemunite Is Nothing Then
            onemunite = New Timer(New TimerCallback(AddressOf scheduledjob), application.Context, 60000, 60000)
        End If
    End Sub

    Public Sub Dispose() Implements IHttpModule.Dispose
        onemunite = nothing
    End Sub

    Private Sub scheduledjob(ByVal sender As Object)
        Dim m As New Mail.MailMessage
        m.From = "me@home.net"
        m.To = "not@home.net"
        m.Subject = "HTTPModule"
        m.Body = "Hej der"
        System.Web.Mail.SmtpMail.SmtpServer = dimsmtp
        System.Web.Mail.SmtpMail.Send(m)
    End Sub
End Class
Avatar billede bluwduch Nybegynder
25. april 2004 - 15:44 #10
Tak Arne

Det var bare et spørgsmål om at paste det ind i et projekt, ændre URL'en, og så virkede det :-D

Nu skal jeg dog bruge en ekseptionel høj timeout, da den side jeg skal eksekvere godt kan tage 10-15 min at fyre af, men det er bare fodarbejde resten af vejen ;-)
Avatar billede arne_v Ekspert
25. april 2004 - 15:46 #11
HttpWebRequest har en Timeout property så det er jo nemt nok.
Avatar billede bluwduch Nybegynder
25. april 2004 - 15:50 #12
Lige præcis ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester