Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi XMl Mit UTF-8 Kodierung (https://www.delphipraxis.net/97443-xml-mit-utf-8-kodierung.html)

franktron 10. Aug 2007 13:58


XMl Mit UTF-8 Kodierung
 
Also ich muss Daten von einem Server holen und vorher eine XML schicken das klappt aber nicht
weis einer was das sein könnte.

Hier die Doku.

HTTP-Methode
Die HTTP-Methode (GET/POST) gibt dem empfangenden Server (hier: EBC) vor, wie er den
eingehenden Request verarbeiten soll. Für die Übermittlung der Daten wie auch aller übrigen
eingehenden Nachrichten am EBC der Synaxon AG ist ausschließlich die HTTP POST
Methode zu verwenden, nicht die HTTP GET Methode.
MIME-Header
Für die korrekte Übermittlung der Nachricht wird eingehend eine der folgenden Content-
Type und MIME Header Deklarationen erwartet. Nähere Informationen hierzu finden Sie
unter: http://www.faqs.org/rfcs/rfc2376.html
Content-Type: text/xml; charset=“utf-8“
Dies ist der empfohlene charset-Wert für die Verwendung mit text/xml. Alternativ kann
innerhalb des MIME Headers der charset auch weggelassen werden:
Content-Type: text/xml

Hier die xsd Datei

XML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="PriceAndAvailabilityQuery">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="TransactionHeader"/>
        <xs:element ref="PriceAndAvailability"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TransactionHeader">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="VersionId"/>
        <xs:element ref="GenerationDateTime"/>
        <xs:element ref="ERP"/>
        <xs:element ref="Login"/>
        <xs:element ref="Password"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="VersionId" type="xs:decimal"/>
  <xs:element name="GenerationDateTime" type="xs:dateTime"/>
  <xs:element name="ERP" type="xs:string"/>
  <xs:element name="Login">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="15"/>
      </xs:restriction>
    </xs:simpleType>    
  </xs:element>
  <xs:element name="Password">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="40"/>
      </xs:restriction>
    </xs:simpleType>    
  </xs:element>
  <xs:element name="PriceAndAvailability">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Query"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Query">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ProductReference"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ProductReference">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="ProprietaryProductIdentifier"/>
        <xs:element ref="GlobalProductIdentifier"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ProprietaryProductIdentifier">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ProprietaryProductNumber" maxOccurs="10" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>  
  </xs:element>
  <xs:element name="ProprietaryProductNumber" type="xs:string"/>
  <xs:element name="GlobalProductIdentifier">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="GlobalProductNumber" maxOccurs="10" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>  
  </xs:element>
  <xs:element name="GlobalProductNumber" type="xs:string"/>
</xs:schema>
Hier meine XML Datei die DEMo XML sieht genau so aus.

XML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<PriceAndAvailabilityQuery>
<TransactionHeader>
  <VersionId>1.00</VersionId>
  <GenerationDateTime>2007-08-10T14:42:29</GenerationDateTime>
  <ERP>W2</ERP>
  <Login>USER</Login>
  <Password>PW</Password>
</TransactionHeader>
  <PriceAndAvailability>
    <Query>
      <ProductReference>
        <ProprietaryProductIdentifier>
          <ProprietaryProductNumber>PCS340206</ProprietaryProductNumber>
        </ProprietaryProductIdentifier>
      </ProductReference>
    </Query>
  </PriceAndAvailability>
</PriceAndAvailabilityQuery>
Und hier mein Code
Delphi-Quellcode:
FIdHTTP:=TidHTTP.Create(Nil);
   FIdHTTP.AllowCookies:=True;
   FIdHTTP.ReadTimeout:=0;
   FIdHTTP.Request.CustomHeaders.Clear;
   FIdHTTP.Request.BasicAuthentication:=False;
   FIdHTTP.Request.ContentEncoding:='UTF-8';
   FIdHTTP.Request.ContentType:='text/xml';
   FIdHTTP.Request.Accept:='text/html, */*';

Stream:=TMemoryStream.Create;
   try
      FQuery.SaveToStream(Stream);
      Buffer:=FURL+'/'+FKomponente+'/'+FFunktion+'?format=xml';
      Stream.Position:=0;
      FResponse.Text:=FIdHTTP.Post(Buffer,Stream);
   finally
      Stream.Free;
   End;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz