4 Stimmen

Salesforce WSDL-Import von simpleContent mit Erweiterung

Ich versuche, eine WSDL in Salesforce zu importieren, in der eines der XML-Elemente sowohl ein Element als auch einen Zeichenfolgenwert enthält, z. B.

 baz

Wenn ich dies mit dem WSDL-zu-Apex-Tool importiere, ist der Zeichenfolgenwert nicht im generierten Klassen vorhanden - nur das Attribut.

Hier ist der WSDL-Ausschnitt:

Die generierte Klasse ist:

public class password {
  public String Type_x;
  private String[] Type_x_att_info = new String[]{'Type'};
  private String[] apex_schema_type_info = new String[]{'http://schema.test.org/1_0','false','false'};
  private String[] field_order_type_info = new String[]{};
}

Gibt es eine Möglichkeit, dass ich diese Klasse manuell ändern kann, um einen Wert ohne ein inneres Element bereitzustellen?

3voto

Dan K. Punkte 1512

Wie Sie bemerkt haben, unterstützt WSDL2Apex xs:extension nicht korrekt (es ist nicht in der Liste der unterstützten WSDL-Funktionen auf Seite 201 von http://www.salesforce.com/us/developer/docs/apexcode/salesforce_apex_language_reference.pdf).

Ändern Sie Ihre generierte Klasse so, dass sie ungefähr so aussieht:

public class password {
  public String input;
  public String Type_x;
  private String[] input_type_info = new String[]{'input','http://www.w3.org/2001/XMLSchema','string','1','1','false'}; // Ändern Sie 'input' in den gewünschten Namen Ihres Elements
  private String[] Type_x_att_info = new String[]{'Type'};
  private String[] apex_schema_type_info = new String[]{'http://schema.test.org/1_0','false','false'};
  private String[] field_order_type_info = new String[]{};
}

Sie müssen möglicherweise auch die für Ihre SOAP-Operation generierte Methode ändern, um diesen zusätzlichen Parameter zu ermöglichen - es hängt davon ab, wie Ihre WSDL aussieht.

0voto

Daniel Ballinger Punkte 12389

Der zugrunde liegende WebServiceCallout.invoke unterstützt keine Erweiterungen einfacher Typen, die auch Attribute haben. Du kannst entweder das eine oder das andere haben, aber nicht beides.

Ich habe das kostenlose FuseIT SFDC Explorer Tool erstellt, das eine alternative Version von Wsdl2Apex enthält. Diese bietet die Möglichkeit, den reinen HttpRequest und die entsprechende SOAP-XML-Nachricht in Apex zu generieren. Mit diesem kannst du die erforderliche Webmethode aufrufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X