Hier ist, was ich bisher für WebServiceCallout.invoke entdeckt habe:
Object servicePort - A class with the following variables:
String enpoint_x: containing the service endpoint (not sure if necessary)
Map<String,String> inputHttpHeaders_x: custom httpHeaders
Map<String,String> outputHttpHeaders_x: I think this is the httpHeaders that were returned
String clientCertName_x: Used in configuring an SSL cert?
String clientCert_x: Used in configuring an SSL cert?
String clientCertPassword: Used in configuring an SSL cert?
Integer timeout_x: How long (in milliseconds?) to wait for the response
String[] ns_map_type_info: The first String is the namespace of the service schema, the second is the name of the object that contains the Apex classes defining the schema objects
Object request_x - The Apex object that will form the XML schema object
Map<String, Object> response_map_x - Object is the object that the result is to be unserialized into. String is the name of Object variable.
String[] {
endpoint - The service endpoint
soapAction - If the service call requires a soapAction, put it here. Otherwise leave blank.
methodSchema - Schema for the request object
method - Name of the request method
responseSchema Schema for the response
responseClass The Apex class that the response will be unserialized into
}
Zusätzlich Soap-Header, indem ein Objekt in der Serviceport-Klasse sowie einen String mit dem gleichen Variablennamen eingefügt werden können + "_hns", die den Namensraum für das Objekt angibt:
public SoapSecurity Security;
private String Security_hns = "Security=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
die apex XML Schema Objekte Variablen für jedes untergeordnete Element (oder Attribute) enthalten sollte. Arrays, deren Variablennamen bestimmten Mustern entsprechen, definieren, wie die Objektvariablen in der XML-Datei verwendet werden.
das folgende Beispiel XML Gegeben:
<foo a="b"><bar>baz</bar></foo>
Die Apex-Klassen so etwas wie dieses würde:
public class MyService {
public class bar {
public String bar;
private String[] bar_type_info = new String[] {'bar','http://www.w3.org/2001/XMLSchema','string','0','1','true'};
private String[] apex_schema_type_info = new String[] {'http://schema.myservice.com', 'false', 'false'};
private String[] field_order_type_info = new String[] {'bar'};
}
public class foo {
public MyService.bar bar;
public String a;
private String[] bar_type_info = new String[] {'bar','http://schema.myservice.com','bar','0','1','true'};
private String[] a_att_info = new String[] {'a'};
private String apex_schema_type_info = new String[] {'http://schema.myservice.com','false','false'};
private String[] field_order_type_info = new String[] {'bar'};
}
}
Hier ist eine (kurze) Aufschlüsselung dieser Objekte:
Wenn die Variable stellt ein anderes XML-Element oder einen Textknoten dar, dann muss ein passender _type_info String [] zB bar_type_info. Die Elemente dieses Arrays sind: 1. XML element name 2. Schema 3. XML Typ 4. minOccurs 5. maxOccurs (auf '-1' für unbeschränkte) 6. isNillable
Wenn die Variable stellt ein Attribut dar, dann muss ein passender _att_info String [] zB sein a_type_info. Thise enthält einfach den XML-Namen des Attributs.
Beachten Sie, dass, wenn ein Klassenvariablenname ein reserviertes Wort ist, _x daran angehängt wird, z. bar_x. Dies würde sich auf die anderen Variablennamen auswirken: bar_x_type_info. Das Apex-Entwicklerhandbuch erklärt ihre Regeln für Namen, aber wenn Sie es manuell erstellen, denke ich, dass Sie ihm den gewünschten Namen geben können - die Arrays bestimmen den Namen des XML-Elements ...
Ich habe keinen Weg gefunden um einen einfachen XML-Typ darzustellen, der auch ein Attribut enthält: z
<foo bar="baz">bar</foo>
Die apex_schema_type_info Array angibt Informationen über die XML-Element durch die Klasse repräsentiert: 1. Schema 2. 'wahr', wenn ElementFormDefault- = "qualifiziert" 3.'true' wenn attributeFormDefault = "qualified"
Ich bin immer noch ziemlich unscharf auf was 2 und 3 tatsächlich tun, aber es scheint zu beeinflussen, wie untergeordnete Elemente (und Attribute) den übergeordneten Namespace erben (ob es impliziert ist oder sein muss) in der resultierenden XML-Datei angegeben).
field_order_type_info gibt einfach die Reihenfolge der untergeordneten Elemente an.
Bitte fühlen Sie sich frei zu korrigieren oder zu klären ...
Haben Sie einen Weg gefunden, den ' Balken'Anfrage XML zu generieren? @ Jeremy –
Jair
Ich fürchte nicht. Ich arbeite derzeit nicht an der Salesforce-Integration. Ich schätze, das wurde angesprochen, aber ich weiß es wirklich nicht. – Jeremy
Danke. Ich denke, es ist immer noch Existenz. – Jair