var response = client.Execute<T>(request);
nicht die Deserialisierung:
public T Deserialize<T>(IRestResponse response)
(automatisch) aufgerufen wird.
Dies war früher immer der Fall, wenn das XML-Schema nicht korrekt verarbeitet werden konnte. Einen Fehlerhinweis konnte ich immer dem Content der Antwort entnehmen. Jetzt erhalte ich aber die Meldung:
{"common.messages":[{"message":{"messageCode":"MESSAGE_RESOURCE_CREATED","message":"Resource [realestate] with id [62657232] has been created.","id":"62657232"}}]}
Wenn ich meine XML-Datei im PlayGround teste, erhalte ich auch keine Fehlermeldung.
Hat jemand noch einen Hinweis, warum die Deserialisierung nicht (mehr) ausgelöst wird???
Fred.
<?xml version="1.0" encoding="utf-8"?>
<q1:apartmentRent xmlns:q1="http://rest.immobilienscout24.de/schema/offer/realestates/1.0">
<externalId>1101.008</externalId>
<title>Wohnen am Sonnenwall---viel Grün---schöne große Höfe---ruhige Seitenstraße</title>
<address>
<street>Löbauer Str.</street>
<houseNumber>54</houseNumber>
<postcode>04347</postcode>
<city> Leipzig</city>
</address>
<apiSearchData>
<searchField1 />
<searchField2 />
<searchField3 />
</apiSearchData>
<groupNumber>0</groupNumber>
<descriptionNote>Die Wohnanlagen Schönefeld bieten inmitten großer, begrünter Innenhöfe mit Balkon ausgestattete, sanierte 1-4 Raum-Wohnungen. Im Treffpunkt Schönefeld des BGL-Nachbarschafts- hilfevereins finden regelmäßig Veranstaltungen für die Generation 50+ statt.</descriptionNote>
<furnishingNote>Bad mit Wanne
Tapete: Wand & Decke
Fussboden: PVC/Laminat
</furnishingNote>
<locationNote>Im Osten Leipzigs bietet Schönefeld als gut strukturierter Stadtteil allen Generationen ideale Wohnmöglichkeiten und mit dem Mariannenpark, dem Sommerbad Schönefeld und einer Schwimmhalle gute Freizeitangebote.</locationNote>
<otherNote />
<showAddress>true</showAddress>
<contact id="59375400" />
<apartmentType>NO_INFORMATION</apartmentType>
<floor>3</floor>
<lift>false</lift>
<assistedLiving>false</assistedLiving>
<cellar>YES</cellar>
<handicappedAccessible>NOT_APPLICABLE</handicappedAccessible>
<condition>NO_INFORMATION</condition>
<interiorQuality>NO_INFORMATION</interiorQuality>
<constructionYear>1976</constructionYear>
<freeFrom />
<heatingType>CENTRAL_HEATING</heatingType>
<firingTypes>
<firingType>DISTRICT_HEATING</firingType>
</firingTypes>
<buildingEnergyRatingType>ENERGY_CONSUMPTION</buildingEnergyRatingType>
<thermalCharacteristic>97</thermalCharacteristic>
<energyConsumptionContainsWarmWater>YES</energyConsumptionContainsWarmWater>
<numberOfBathRooms>1</numberOfBathRooms>
<guestToilet>NOT_APPLICABLE</guestToilet>
<parkingSpaceType>NO_INFORMATION</parkingSpaceType>
<baseRent>276</baseRent>
<totalRent>396</totalRent>
<serviceCharge>120</serviceCharge>
<deposit>Genossenschaftsanteile erforderlich.</deposit>
<heatingCosts>60</heatingCosts>
<heatingCostsInServiceCharge>YES</heatingCostsInServiceCharge>
<petsAllowed>NO_INFORMATION</petsAllowed>
<livingSpace>60</livingSpace>
<numberOfRooms>3</numberOfRooms>
<builtInKitchen>false</builtInKitchen>
<balcony>false</balcony>
<certificateOfEligibilityNeeded>false</certificateOfEligibilityNeeded>
<garden>false</garden>
<courtage>
<hasCourtage>NO</hasCourtage>
<courtage />
<courtageNote />
</courtage>
</q1:apartmentRent>
Das Aktualisieren der XSD-Dateien mit Hilfe des PowerShell Scriptes: DownloadSchemaFiles.ps1 funktioniert. (Die akt. XSD-Dateien werden in das XSD-Verzeichnis geladen)
Wenn ich danach aber das PowerShell-Script: GenerateClasses.ps1 ausführe, kommen Fehler über Fehler (siehe Bild).
Parameter 1 kann nicht NULL sein. Muss ich diesem Script noch etwas übergeben???
Das Script möchte auf ein Package XmlSchemaClassGenertator zugreifen, welches (bei mir) gar nicht vorhanden ist. Muss ich noch etwas installieren?
…
private T Execute<T>(RestRequest request, string baseUrl = null) where T : new()
{
baseUrl = baseUrl == null ? BaseUrl : string.Join("/", BaseUrlPrefix, baseUrl);
var client = new RestClient(baseUrl);
client.Authenticator = OAuth1Authenticator.ForProtectedResource(ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret);
client.AddHandler("application/xml", XmlDeserializer);
request.XmlSerializer = XmlSerializer;
get_Request(request); // Request-Parameter Auslesen für eine Anzeige in der Applikation
var response = client.Execute<T>(request);
if (response.ErrorException != null) throw response.ErrorException;
return (T)Konvert_ContentToMessages<T>(response);
// return response.Data;
}
Meines Erachtens, kommt gar keine Fehlermeldung.
Das Script möchte auf ein Package XmlSchemaClassGenertator zugreifen, welches (bei mir) gar nicht vorhanden ist. Muss ich noch etwas installieren?
$dll = ls .\..\packages\XmlSchemaClassGenerator*\lib\*\XmlSchemaClassGenerator.dll | Sort-Object LastModificationTime -Descending | Select-Object -First 1
Ein Problem habe ich aber noch in Zeile 42. Das
XmlSchemaClassGenerator - Objekt hat keine Generator.NamespaceMapping Eigenschaft!
--
Sie erhalten diese Nachricht, weil Sie in Google Groups E-Mails von der Gruppe "immobilienscout24-development" abonniert haben.
Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an immobilienscout24-de...@googlegroups.com.
Wenn Sie in dieser Gruppe einen Beitrag posten möchten, senden Sie eine E-Mail an immobilienscou...@googlegroups.com.
Gruppe besuchen: http://groups.google.com/group/immobilienscout24-development
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/immobilienscout24-development/43a7ac55-23e6-4eac-96d4-04db62b7be60%40googlegroups.com auf.
$dll = ls .\..\packages\XmlSchemaClassGenerator*\lib\*\XmlSchemaClassGenerator.dll | Sort-Object LastModificationTime -Descending | Select-Object -First 1
if(-not (Test-Path ..\generated -pathType container))
{
New-Item -Path "..\" -Name "generated" -ItemType directory
echo "Verzeichnis: <generated> erstellt."
echo ""
}
So weit, so gut. Ich habe jetzt im generated-Verzeichnis die Klassen-Dateien der aktuellen IS24-Schemas. Aber wie erhalte ich denn jetzt meine aktualisierte IS24.cs?
... wo im Fehlerfall (HTTP Status >= 400) auch versucht wird, in den eigentlich erwarteten Typ zu deserialisieren (bspw. ApartmentRent) und nicht in den dann zurückgelieferten Typ Messages ...Jetzt stellt sich bloß die Frage: Früher (bis vor ca. 1 Monat) funktionierte es ja auch mit dem "alten" Code (ohne Beachtung des Rückgabe-Typ's) also muss sich doch etwas geändert haben.
var response = Deserialize<T>(request, await client.ExecuteTaskAsync(request));
Ich habe nun "bloß" das Problem, beim (heutigem) Testen wurde wieder Deserialisiert! Und ich habe nicht eine Zeile im altem Projekt geändert!!!
Wie gesagt, ich bin gerade dabei auf die aktuelle (asynchrone) API umzustellen. Und schwups habe ich auch wieder ein Problem. In WPF kommt der Task nach dem Aufruf von:var response = Deserialize<T>(request, await client.ExecuteTaskAsync(request));nicht mehr zurück. Die gleichen Programm-Zeilen (Copy/Paste) in eine Konsolen-Anwendung kopiert und die Welt ist schön.