Ergebnis 1 bis 11 von 11
-
Johann Gast
Hallo,
Wie kann ich ein Webservice (http://url.wsdl) in meine Windows Phone App einbinden?
Ich kann den Webservice ohne Probleme in eine Windows .NET Anwendung einbinden aber in einem Windows Phone Projekt ist die Schaltfläche "Webservice hinzufügen" ausgegraut.
Gibt es dort eine Möglichkeit ein solches Webservice einzubinden?
Vielen Dank schon mal im vorraus.
Johann Löwen
-
Johann Gast
Hat keiner eine Idee ob dies möglich ist und wenn ja dann wie.
Mit der kostenlosen PocketPC.ch App von meinem HD7 T9292 aus geschrieben.
-
Mich gibt's schon länger
- 27.02.2012, 22:23
- #3
normalerweise machst du in deinem Solution Explorer rechtesklick auf References und dann wählt man "Add Service Reference..." aus. In dem oberen Feld gibst du die Adresse ein und unten der NameSpace, den du im Programm benutzen willst, ABER so wie ich das hier (http://forums.create.msdn.com/forums...px?PageIndex=2) herausgelesen habe funktioniert es iwie nicht ganz. also wenn du ein WCF Service nutzt, dann geht das ohne Probleme, aber bei anderen scheint es wohl Probleme bei der Rückgabe zu geben. Viele sagen, es kommen "null" Objekte/Daten zurück. Dies scheint aber nicht bei den Standardtypen zu sein wie String oder int. Lies dir am besten den Thread komplett durch, dort werden auch ein paar workarounds vorgeschlagen, vielleicht funktioniert ja einer.
und nicht vergessen "using ..." einzufügen
-
Johann Gast
Danke für die Antwort.
In dem oben genannten Thread scheint es aber um ein anderes Problem zu gehen. Ist aber mein Fehler da meine Angaben nicht vollständig waren.
Ich habe gerade das ganze noch einmal versucht und mir ist die folgende Warnung aufgefallen:
Warnung für benutzerdefiniertes Tool: Contract is not compatible with Silverlight 3 because it contains one or more operations with SOAP Encoding (use='encoded'). Only the non-encoded operations will be generated.
Gibt es für mich als Benutzer des Dienstes eine Möglichkeit diesen Webservice dennoch zu verwenden?
-
Gehöre zum Inventar
- 28.02.2012, 08:15
- #5
Das Problem ist, dass Microsoft in Silverlight die Verwendung von SOAP-WebServices nicht unterstützt (das sind die, die das .Net Framework bis Version 3.0 standardmässig generiert hat mit ASP.Net). Mit Silverlight gehen meines Wissens nur noch REST-Services. Du kannst jedoch das WebService einfach selbst mittels HTTP aufrufen und das XML selbst parsen - das geht immer.
-
Johann Gast
@StevieBallz: Danke für die Antwort. Hättest du für mich ein Beispiel wie ich einen Webservice per HTTP aufrufen kann. Oder geht das ganz normal mit einem HttpRequest? Aber wie gebe ich dabei die Methode und die Parameter an?
Mit der kostenlosen PocketPC.ch App von meinem HD7 T9292 aus geschrieben.
-
Johann Gast
Ich habe mal ein wenig recherchiert.
Mit dem Soap Message Generator http://soapclient.com/soapmsg.html habe ich mir eine SoapMessage erstellt die wie folgt aussieht:
Diese Message schicke ich nun mit der folgenden Methode an den Server:HTML-Code:<?xml version="1.0" encoding="UTF-8" standalone="no"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="urn:WebService_Customer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <SOAP-ENV:Body> <mns:GetSessionID xmlns:mns="urn:WebService_Customer" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <UserID xsi:type="xsd:integer">0000000</UserID> <UserCallname xsi:type="xsd:string">Name1</UserCallname> <UserName xsi:type="xsd:string">Name2</UserName> <PasswordHash xsi:type="xsd:string">PasswordHash</PasswordHash> </mns:GetSessionID> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Ich bekomme auch eine Antwort aber die Antwort besteht aus der Definition des Webservices also genau das glaeich wenn ich die URL der WSDL-Datei einfach in den Browser packe und Enter drücke.Code:Public Function SoapRequest(ByVal webserviceURL As String, ByVal soapMessage As String) As Xml.XmlDocument Dim res As New Xml.XmlDocument() Using webClient As New Net.WebClient() webClient.Headers.Add("Content-Type", "application/soap+xml; charset=utf-8") res.LoadXml(webClient.UploadString(webserviceURL, soapMessage)) End Using Return res End Function
-
Gehöre zum Inventar
- 01.03.2012, 15:09
- #8
Wies sieht denn da deine webserviceURL aus? Wenn du da an die URL mit dem *.wsdl schickst, dann kriegst du bei einem Get trotzdem die WSDL zurück.
-
Johann Gast
Die URL lautet: http://www.dvd-datenbank.com/webserv..._Customer.wsdl
Und als Antwort bekomme ich die gleiche XML-Struktur wie wenn ich die URL alleine im Browser ansteuere.
-
Johann Gast
Ich habe mir jetzt mal "soapUI" heruntergeladen und es damit versucht. Es klappte auf anhieb also habe ich mir die Soap Messages von dort kopiert aber wenn ich die aus meinem Programm absende dann bekomme ich immer noch die gleiche Antwort wie bisher auch.
Ist die Funktion "SoapRequest" die etwas weiter oben schon steht falsch? Was kann man da verändern um doch noch das richtige Ergebnis zu bekommen?HTML-Code:<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:WebService_Customer"> <soapenv:Header/> <soapenv:Body> <urn:GetSessionID soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <UserID xsi:type="xsd:integer">?</UserID> <UserCallname xsi:type="xsd:string">?</UserCallname> <UserName xsi:type="xsd:string">?</UserName> <PasswordHash xsi:type="xsd:string">?</PasswordHash> </urn:GetSessionID> </soapenv:Body> </soapenv:Envelope>
-
Johann Gast
Habe das Problem nun endlich beheben können.
Die SOAP Nachrichten sind korrekt. Ich musste die "SoapRequest" Methode anpassen.
Für den der auch über solche Probleme stolpern sollte hinterlasse ich hier mal meine jetzt funktionierende Methoden:
Code:Private Sub SoapRequest(ByVal url As String, ByVal soapMessage As String, ByVal encoding As Text.Encoding) If (Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsNetworkAvailable) Then Try Dim webClient As New Net.WebClient() webClient.Headers(HttpRequestHeader.ContentType) = "text/xml" webClient.Encoding = encoding AddHandler webClient.UploadStringCompleted, AddressOf WebClient_UploadStringCompleted webClient.UploadStringAsync(New System.Uri(url, UriKind.Absolute), "POST", soapMessage) Catch ex As Exception End Try End If End Sub Private Sub WebClient_UploadStringCompleted(sender As Object, e As System.Net.UploadStringCompletedEventArgs) Dim xdoc As Xml.Linq.XDocument = Xml.Linq.XDocument.Parse(e.Result) 'Weiter verarbeitung End Sub
Ähnliche Themen
-
Frage: Muss ich eine Windows mobile 6.1 gekaufte App für Windows Phone 7 neu kaufen?
Von forumuser im Forum Windows Phone 7 AppsAntworten: 4Letzter Beitrag: 20.07.2011, 12:22

Danke:













Mobile Gaming: 2030 spielen auf...