Zum Inhalt springen

noobvb.net

Mitglieder
  • Gesamte Inhalte

    51
  • Benutzer seit

  • Letzter Besuch

Beiträge von noobvb.net

  1. Hi Phil,

    Danke für die Antwort.

    Mal ne Frage, was verstehst du unter Webservice?

    Def:Konzeptionell betrachtet sind Webservices Dienste, die für die Kommunikation zwischen Computern konzipiert und über verschiedene Plattformen hinweg interoperabel sind. Mit ihnen können unterschiedliche, standardisierte Dienste über das Web abberufen und eigene Dienste hinzugefügt werden. Unter den Begriff Webservices fallen alle Maßnahmen, die die Kommunikationshemmnisse zwischen verschiedenen E-Services beheben. Technisch gesehen ist es ein Dienst mit HTTP als Transportprotokoll und dem Simple Object Access Protocol (SOAP) als Schnittstelle auf Anwenderebene.

    Microsoft gibt den WebClient als Webservice an. Dieser ist nur ein Wrapper für WebRequest/Response und das benütze ich. Also verwende ich doch bereits webservices? Oder lieg ich da falsch?

    Gruß

    Manuel

  2. Hi Simon, Hi Phil,

    vielen Dank für die nochmaligen Infos.

    @Phil: Ich wollte mit der Frage nur nochmal wissen, ob es außer den genannten vielleicht noch weitere euch bekannte Lösungen gibt. Die im Tread genannten habe ich bereits berücksichtigt ;-).

    @Simon Vielen Dank für das Codebeispiel.

    Beste Grüße

    Manuel

  3. Hi Leute,

    ihr habt davon gesprochen, dass ich mehrer Möglchkeiten habe, wenn der Server einstellbar wäre. Könnt ihr die vielleicht mal alle nennen? In die Sache ist jetzt doch etwas Bewegung gekommen und ich wäre dankbar, wenn Ihr meinen Horizont nochmal etwas erweitern könntet ;-)

    Beste Grüße

  4. Hi Phil,

    ich habe verstanden, dass das Problem nicht primär bei mir liegt.

    Das es über die gegenseitige Kommunikation zwischen meiner Schnittstelle und er gegnüberliegenden Schnittstelle realisierbar wäre, ist für mich auch verständlich. Auch wenn ich mich hier wiederhole, aber dieser Weg ist ausgeschlossen.

    Dennoch muss ich diese Aufgabe lösen und die Frage ist nun eben: wie?

    Gruß

  5. Hi Leute,

    was ich noch sagen wollte.

    @Gateway_man: Alle Vorschläge, die wir machen, setzen entweder voraus, dass der OP die Konfig des Servers verändern oder die Schnittstelle verändern darf. Der OP möchte eine Lösung, wo er an dem bestehenden System nichts ändert

    Ich bin natürlich bereit an meiner Schnittstelle Veränderungen vorzunehmen,

    hier wäre ich auch über mögliche Codebeispiele sehr dankbar.

    Was die gegenüberliegende Seite betrifft. Hier kann ich nichts dran ändern und muss alles leider als gegeben hinnehmen.

    Gruß

    noobvb

  6. Hi Leute,

    vielen Dank für eure Hilfe.

    @Gateway_man habe mir auch schon gedacht, über einen FTP Zugriff auf den Server zuzugreifen. Denke aber, dass das nicht möglich sein wird, denn ich darf weder am Server noch an der gegenüberliegenden Schnittstelle Veränderungen an den Einstellungen vornehmen.

    Wie seht ihr das? Ist eine derartige Aufgabe ohne Anpassungen an der gegenüberliegenden Seite überhaupt umsetzbar?

    Beste Grüße

    noobvb

  7. Hi

    Habe ich mich irgendwie unklar ausgedrückt? Ich möcht nicht meine gesendeten Daten wiederholen und die gegenüberliegende Seite sendet mir keinerlei Informationen.

    Timer habe ich deshalb verwendet, weil eine exakte Zeit nicht notwendig ist. Denn die Zeit könnte ich so oder so nicht exakt bestimmen, da ich mal mehr mal weniger große Daten versende, die natürlich auf der gegenüberliegenden Seite auch eine unterschiedlich lange Verarbeitungsdauer haben. Daher muss eben eine gewisse Zeit zwischne Up und Download berücksichtigt werden. Deshalb ja auch die 5 Min Unterschied. Soll ja auch von einem Menschen eingestellt werden. Wäre wohl ein etwas komischen Programm ohne GUI das zu einer ihm beliebigen Zeit irgend welche events auslöst.

    Ich wollte eigentlich nur eine Info bekommen, wie man einen Ordner auf einem Server nach einem Dateinamen durchsucht und keine Ratschläge, wie man besser programmiert.

  8. Und wie? POST oder GET Request oder liegt evtl dahinter noch ein WebDAV?

    WebDAV ? Wikipedia

    Hypertext Transfer Protocol ? Wikipedia

    Den Upload habe mache ich mit PUT realisiert ist dies mittels httpwebrequest/response

    Du initierst die Kommunikation und schiebt Deine Daten hoch. Damit ist für die Kommunikation abgeschlossen, denn HTTP ist zustandslos (Zustandslosigkeit ? Wikipedia)

    Genau, die Kommunikation geht ausschließlich von mir aus. Upload und Download sind so realisiert, dass sie über einen Timer zu einer bestimmten Zeit ausgeführt werden

    Woher weißt Du dann überhaupt, dass die Daten für Dich bereit liegen? D.h. in Deinem Fall musst Du wieder bei der Schnittstelle nachfragen, ob die Daten bereit liegen und da muss sie Dir dann mind den Namen der Datei mitteilen, da Du daraus eine URL zum download erstellen musst

    Weiß ich nicht. Da ich unterschiediche Timer habe zum ausführen von Up und Download muss hier eben ein Erfahrungswert angenommen werden, der die Verarbeitungszeit der Schnittstelle berücksichtigt.

    Die Schnittstelle kommuniziert überhaupt nicht mit mir. Das keine bidirektionale Kommunikation. Die Kommunikation ist immer einseitig. Ich sehe so zu sagen nur den Empfangs und den Quitungsordner.

    noob

  9. Hi Phil,

    also, ich sende und empfange die Daten über Https. Was die Schnittstelle genau tut, weiß ich auch. Die Kommunikation zwischen meinem Programm und der Schnittstelle ist nicht direkt, sondern ich übersende der Schnittstelle Daten in einen zuvor endeutig vorgegebenen Ordner. Nach dem erhalt der Daten beginnt die Schnittstelle auf ihrer Seite mit dem Überprüfen meiner gesendeten Daten. Nachdem sie damit fetig ist, legt sie mir in einem ebenfalls eindeutig definierten Ordner auf dem Server eine Datei ab (Server ist nicht meiner, sondern der der zur Schnittstelle gehört). Die Daten, die die Schnittstelle mir in den Ordern gepackt hat, mächte ich abholen. Das ist genau eine XMl Datei und ein ziparchiv. Diese beiden bekommen bei Ihrer Erzeugung einen eindeutigen Dateinamen, der das Tagesdatum und die Uhrzeit inklusive Millisekunden beinhaltet. Das Problem ist, dass ich jetzt praktisch blind nach den Daten suchen muss. Dass der Prozess vielleicht nicht so toll ist, da es besser wäre, wenn die Daten von der gegenseite einfach zu mir übertragen würden, ist mir auch klar. aber hier kann ich mich nicht mit irgend jemand zusammensetzen. Die vorgaben sehen so aus und werden nicht geändert. wäre es mir möglich den prozess zu beeinflussen, hätte ich dieses problem nicht.

    Gruß

    noob

  10. Hi Leute

    @Gateway_man: Vielen Dank für den Code. Hab auch gleich mal versucht es umzusetzen. Hast du den nur auf die Schnelle geschrieben oder hast du den so im Einsatz? Funktioniert bei mir nicht, da der Requeststream leer ist. Liegt wohl daran, dass ja auch kein echter Dateistream geöffnet wird, wenn kein Dateiname in der URI steht, oder?

    @Phil: Kann dir leider nicht genau sagen, was die Schnittstelle, da ich das nicht darf. Aber soviel sei verraten. Sie empfängt von mir zwei Dateien und überprüft diese. Das Ergebnis dieser Prüfung wird von dieser Schnittstelle dann in einen fest vorgegebenen Ordner in Form einer XML Datei abgelegt. Diese Protokolldatei muss ich mir abholen und ebenfalls überprüfen. Würde ich das ganze manuell machen, wäre das alles recht simpel. Hätte die Datei immer den selben Namen auch, aber die Datei hat einen Dateinamen, der die Uhrzeit der Erstellung beinhaltet. Was ja recht flexbel ist und was eine feste Codierung unmöglich macht. Hab mir auch schon gedacht, dass ich mein Programm so laufen lasse, dass es sämtliche Zeiten durchläuft und immer wieder die Downloadprozedur startet. Konnte das aber nihct umsetzen und denke auch, dass dieser weg recht kritisch ist.

    Vielen Dank nochmal für eure Hilfe. Hoffe, ihr könnt mir noch ein paar Tips geben.

    Beste Grüße

    Noob

  11. Hi Phil,

    ich wäre auch froh, wenn ich das einfach anders machen könnte, aber das geht leider nicht. Den Dateinamen der Files kann ich nicht beeinflussen, der ist vorgegeben. Wenn ich den Upload mache, nimmt eine Schnittstelle auf dem Server meine Daten entgegen und Speicher ein Protokoll für mich in einem anderen Ordner. Der Dateiname wird von der Schnittstelle erzeugt. Die Daten muss ich holen, da ich nur so überprüfen kann, ob die gesendeten Daten von der Schnittstelle verarbeitet wurden.

    Mir sind da ziehmlich stark die Hände gebunden, was das Speichern von Daten außerhalb der erwarteten Dateien auf dem Server angeht. Hier besitze ich keinerlei Rechte.

    Gruß

    Noob

  12. Hi Klotzkopp,

    diese Datei liegt nur für mein Programm dort.

    Bei der Datei handelt es sich um eine Protokolldatei, welche eine Antwort der gegenüberliegenden Seite auf ein Upload von meinem Programm darstellt. Mir ist der Ordern auf dem Server bekannt, jedoch nicht der genau Dateiname, da dieser in seinem Namen das Tagesdatum und die Uhrzeit der Erstellung inklusive Millisekunden enthält.

    Der Download verlangt zwingend einen Dateinamen, da ansonsten keine Ressource angesprochen werden kann.

    Natürich könnte auch manuell auf den Ordner zugegriffen werden und der Dateiname so ermittelt werden, dies ist aber nicht gewünscht. Das ganze soll zu einer bestimmten Uhrzeit automatisch ausgeführt werden.

    Du hast schon recht, andere Programme werden nicht raten, aber wie es zu realisieren ist, will mir einfach nicht einfallen.

    Wenn du mir einen Tipp hast, wie ich an die Dateiinfo komme, wäre ich dir sehr dankbar.

    Beste Grüße

    Noob

  13. Hi Gateway_man,

    vielen Dank für deine Hilfe.

    Leider löst dein Tipp mein Problem nicht. Den Download habe ich nämlich bereits realisiert und verwende dabei httpwebrequest und response und die besitzen keine der Eigenschaften von webrequest. Da das erstellen schon sehr langwierig war, möchte ich jetzt nicht alles komplett umwerfen.

    Hast du vielleicht Erfahrung mit der webrequest Klasse und kannst mir ein paar Fragen beantworten?

    • Wie wird der Uri übergeben? Habe keine Methode gefunden, die ein Uri entgegen nimmt, da die meisten ReadOly sind

    • Kann ich WebRequest zusätzlich verwenden?

    • Gilt diese Klasse nicht nur für ASP.net? Es ist mir leider nicht möglich auf ASP.net zurückzugreifen und somit wäre auch die Umsetzung über webrequest nicht möglich

    Bin weiterhin für jeden Tip dankbar

    Beste Grüße

    noob

  14. Hi flashpixx,

    vielen Dank für die Info.

    Es muss doch aber irgend wie eine Möglichkeit geben, herauszufinden, wie die Daten Dateien heißen, die sich auf dem Server befinden. Ich kenne nur einen Ordner auf dem Server und aus diesem sollte ich eine bestimmte Datei herunterladen. Gibt es hierfür tatsächlich keine Möglichkeit zur Umsetzung?

    Gruß

    noob

  15. Hi Leute,

    habe mal wieder eine Frage an euch.

    Ich möchte eine Datei von einem Webserver laden. Die Methode, welche mir die Daten downloadet, verlangt zwingend einen Dateinamen. Da die Datei, die ich suche, täglich ihren Namen ändert, kann ich diesen nicht fest angeben.

    Nun meine Fragen:

    Hat irgend jemand eine Idee, wie man das Verzeichnis eines Webservers nach Dateien durchsuchen kann? Hab schon im Netz danach geschaut und da hab ich nichts gefunden.

    Bin für alle Tipps dankbar

    Beste Grüße

    noobvb.net

  16. Hi Leute,

    habs hinbekommen!!!:)

    Der Fehler lag sowohl beim Server als auch daran, wie ich den Code verwendet habe.

    Bei der Angabe der URI ist unbedingt darauf zu achten, dass das File, das geuploaet werden soll, bereits mit angegeben wird, auch wenn das auf den ersten Blick nicht logisch erscheint, da es sich ja noch nicht auf dem Server befindet.

    Der Grund hierfür ist der, dass die Methode aber eine Ressource beim WebServer benötigt, auf die sie sich beziehen kann und das geht nur so.

    Beste Grüße und nochmal vielen Dank euch allen für die Hilfe.

    noobvb

  17. Hi Leute,

    habe jetzt nun noch ein wenig recherchiert und dabei habe ich auf der msdn Seite ein Anleitung gefunden, nach der ich folgenden Code erstellt habe:

    Private Sub ExchangeXMLByHttps()
    
            Try
    
                Dim Path As String
    
                Dim Adress As String
    
                Dim FileName As String
    
    
                Path = "C:\bin\Debug\testfiles\"
    
                FileName = "20090713-125202-RueckmeldungKontakt.xml"
    
                Adress = "https://Server/Upload/"
    
                Dim myWebClient As New WebClient
    
    
    
                myWebClient.Credentials = CredentialCache.DefaultCredentials
    
                Dim responseArray As Byte() = myWebClient.UploadFile(Adress, "POST", Path & FileName)
    
                MsgBox(responseArray.Length)
    
    
            Catch webex As WebException
    
                MsgBox(webex.Message)
    
                MsgBox(webex.Response)
    
            Catch ex As Exception
    
                MsgBox(ex.Message)
    
            End Try
    
    
            'Dim content() As Byte
    
            'content = ReadFile(Path & FileName)
    
            'MsgBox(content)
    
            'UploadFile(Adress, "", FileName, content)
    
    
        End Sub

    Nun habe ich jedoch immernoch die selben Probleme. Bei der Methode POST kommt Fehler 405 Unzulässige Methode und bei Get kommt ebenfalls eine Fehlermeldung.

    Nun habe ich in einem anderen Forum gelesen, dass man zum Dateiupload auf dem Server ein entsprechendes CGI Programm braucht, dass die Datei entgegennimmt. Stimmt das?

    Wenn ja, kann mich mal jemand aufklären, wie das Ganze zusammenhängt?

    Wenn es daran nicht liegt, kann es sein, dass ich für den Upload die falschen Methoden für https verwende?

    Beste Grüße

    noob

    P.S. Würde mich auch sehr über Beispielcode freuen

  18. Hi Amstelchen,

    habe herausgefunden wie es mit telnet geht. Dabei habe ich festgestellt, dass Port 23 des Servers zu ist. Kann das die Lösung sein? Oder ist das nur der telnet-Port und nicht die Lösung meines Problems?

    Kann es durch Einstellungen am Server leider nicht herausfinden, da ich keine Rechte auf dem Server besitze.

    Gruß

    noob

  19. Hi Amstelchen,

    danke, das hat für Klarheit gesorgt und auch gleich wieder Fragen aufgeworfen. Diesmal liegt es aber eher an meiner mangelden Kenntnis von telnet. Ich habe den Aufruf auf den Server und den dazugehörigen Ordner gestartet (Server/Ordner). War dies falsch oder richtig? Kenne mich mit telnet leider gar nicht aus.

    Beste Grüße

    noob

  20. Hi Ted,

    hab mir die Beiträge durchgelesen. Habe die Lösung aber immernoch nicht gefunden. Wenn ich das gezeigte Beispiel verwende (Methode Get), kommt zwar kein Fehler mehr, aber es wird trotzdem kein File geuploadet.

    Bin mittlererweile wirklich ratlos. :(

    Hat niemand ein gutes Beispiel oder Tutorial für mich?

    Beste Grüße

    noob

  21. Hi Amstelchen,

    vielen Dank für deine Antwort.

    Kannst du mir bitte sagen, wie ich einen Post request via Browser ausführen muss? Steh grad irgendwie auf dem Schlauch.

    Habe mir auch schon gedacht, dass es vielleicht an der falschen Methode liegen könnte. Mit Get hat es aber auch nicht funktioniert. Hier erscheint dann anstatt der Fehlermeldung "405 Unzulässige Methode" der Fehler "Inhaltsteil mit dem Verbtyp kann nicht gesendet werden". Mit dieser Fehlermeldung kann ich aber leider genauso wenig anfangen. Weißt du zufällig, was damit gemeint sein könnte?

    Gruß

    noob

  22. Hi Leute,

    hab mittlererweile eine Lösung für das Problem gefunden. Habe damit aber immernoch ein paar Probleme, vielleicht kann mir ja jemand sagen, woran es liegen könnte.

    Der Code sieht folgendermaßen aus:

    Public Function UploadFile(ByVal filePath As String, _
    
                                       ByVal address As String, _
    
                                       ByRef pb As System.Windows.Forms.ToolStripProgressBar) _
    
                                       As Boolean
    
    
            'Get the length of the selected file
    
            Dim fi As IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filePath)
    
            Dim fileLength = fi.Length
    
    
            'Create the request
    
            Dim request As HttpWebRequest = _
    
                DirectCast(HttpWebRequest.Create(address), HttpWebRequest)
    
    
            'Configure request
    
            request.Credentials = New System.Net.NetworkCredential("BENUTZER", "PWD")
    
            request.Method = "POST" 'WebRequestMethods.Http.Post
    
    
    
            request.ContentLength = fileLength.ToString()
    
            'request.UserAgent = "http 1.1"
    
            ' request.ContentType = "http 1.1"
    
    
            'This is required for our WebDav server (will error without it)
    
            'request.SendChunked = True
    
            'request.Headers.Add("Translate: f")
    
            'request.AllowWriteStreamBuffering = True
    
    
            Dim s As IO.Stream = request.GetRequestStream()
    
            Dim fs As New IO.FileStream(filePath, IO.FileMode.Open, IO.FileAccess.Read)
    
    
            'Größe des Files in KB
    
            pb.Maximum = CInt(fileLength \ 1024)
    
            pb.Minimum = 0
    
            pb.Value = 0
    
            pb.Visible = True
    
    
            Dim bytes(1023) As Byte              '1024 bytes
    
            Dim bytesRead As Integer = 0
    
            Dim totalBytesRead As Long = 0
    
    
            Do
    
                bytesRead = fs.Read(bytes, 0, bytes.Length)
    
    
                If bytesRead > 0 Then
    
    
                    totalBytesRead += bytesRead
    
    
                    'Write to stream
    
                    s.Write(bytes, 0, bytesRead)
    
    
                    'Update progress
    
                    pb.Value = CInt(totalBytesRead \ 1024)
    
    
                End If
    
    
            Loop While bytesRead > 0
    
    
            s.Close()
    
            s.Dispose()
    
            s = Nothing
    
    
            fs.Close()
    
            fs.Dispose()
    
            fs = Nothing
    
    
    
            Try
    
    
                Dim response As HttpWebResponse = _
    
                    DirectCast(request.GetResponse(), HttpWebResponse)
    
    
                MsgBox(response.ProtocolVersion)
    
                'Check the ContentLength of the Response
    
                Dim code As HttpStatusCode = response.StatusCode
    
    
                response.Close()
    
                response = Nothing
    
    
                pb.Visible = False
    
    
                'Return Success
    
                Return (code = HttpStatusCode.OK)
    
            Catch ex As WebException
    
                'MsgBox(ex.Response.ResponseUri.AbsoluteUri)
    
                MsgBox(ex.Message)
    
            Catch e As Exception
    
                MsgBox(e.Message)
    
            End Try
    
    
        End Function

    Möchte ich nun die Datei versenden, bekomme ich immer den Fehler: "Der Remoteserver hat einen Fehler zurückgegeben: (405) Unzulässige Methode".

    Hat jemand eine Ahnung, ob das Problem im Code steckt oder in der Administration des WebServers? Ich habe zwar die Vermutung, dass es am Server liegt, habe aber keinen Einfluss auf dessen Administration.

    Wäre super, wenn mir jemand dabei weiterhelfen könnte.

    Beste Grüße

    noob

  23. Hi Leute,

    hab mal wieder eine Frage.

    Ich möchte via https eine XML-Datei und ein Zip-Archiv versenden.

    hat jemand von euch vielleicht einen Tip, wie sich das umsetzen lässt?

    Die bisherigen Beispiele die ich gefunden habe, waren recht wenig hilfreich.

    Hoffe, ihr könnt mir auch diesmal helfen.

    Beste Grüße

    noob

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...