I have the below wsdl file (the original one is larger than 1MB, so I only copy the parameters I need): https://pastebin.com/3J23zm7K
However, as Salesforce doesnt support xsd:extension base, I change the following:
<complexType
name="AuthentifizierteAnfrageBasis"
abstract="true">
<sequence>
<element
name="apiKey"
type="string">
<annotation>
<documentation>
Der Webdienst-Schlüssel für die Validierung.
<m-ex>4fil24gnio2gno24g2…</m-ex>
</documentation>
</annotation>
</element>
</sequence>
</complexType>
<complexType name="GetAnlageEegSolarParameter">
<complexContent>
<extension base="mastr:AuthentifizierteAnfrageBasis">
<sequence>
<element
name="marktakteurMastrNummer"
type="mastr:MarktakteurMastrNummerId">
<annotation>
<documentation>
Die MaStR-Nummer des vom Webdienst-Benutzer verwendeten
Marktakteurs
<m-ex>SNB91234567890</m-ex>
</documentation>
</annotation>
</element>
<element
name="eegMastrNummer"
type="mastr:EegMastrNummerId">
<annotation>
<documentation>
Die MaStR-Nummer der gewünschten EEG-Anlage
<m-ex>EEG91234567890</m-ex>
</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
to this:
<complexType name="GetAnlageEegSolarParameter">
<complexContent>
<extension base="mastr:AuthentifizierteAnfrageBasis">
<sequence>
<element
name="apiKey"
type="string">
<annotation>
<documentation>
Der Webdienst-Schlüssel für die Validierung.
<m-ex>4fil24gnio2gno24g2…</m-ex>
</documentation>
</annotation>
</element>
<element
name="marktakteurMastrNummer"
type="mastr:MarktakteurMastrNummerId">
<annotation>
<documentation>
Die MaStR-Nummer des vom Webdienst-Benutzer verwendeten
Marktakteurs
<m-ex>SNB91234567890</m-ex>
</documentation>
</annotation>
</element>
<element
name="eegMastrNummer"
type="mastr:EegMastrNummerId">
<annotation>
<documentation>
Die MaStR-Nummer der gewünschten EEG-Anlage
<m-ex>EEG91234567890</m-ex>
</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
Then it creates 2 APEX classes:
//Generated by wsdl2apex
public class mastrGenerator1 {
......
public class GetEinheitBasisParameter {
public String apiKey;
public String marktakteurMastrNummer;
public String einheitMastrNummer;
private String[] apiKey_type_info = new String[]{'apiKey','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] marktakteurMastrNummer_type_info = new String[]{'marktakteurMastrNummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] einheitMastrNummer_type_info = new String[]{'einheitMastrNummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle','true','false'};
private String[] field_order_type_info = new String[]{'apiKey','marktakteurMastrNummer','einheitMastrNummer'};
}
public class GetAnlageEegSolarAntwort {
public String EegMastrNummer;
public DateTime LetzteAenderung;
public Date Meldedatum;
public Date DatumLetzteAktualisierung;
public Boolean InanspruchnahmeZahlungNachEeg;
public String AnlagenschluesselEeg;
public mastrGenerator1.ErweiterterString AnlagenkennzifferAnlagenregister;
public Decimal InstallierteLeistung;
public Date EegInbetriebnahmedatum;
public mastrGenerator1.ErweiterterString Registrierungsnummer;
public String MieterstromAngemeldet;
public Date MieterstromMeldedatum;
public Date MieterstromErsteZuordnungZuschlag;
public Boolean AusschreibungZuschlag;
public Decimal ZugeordneteGebotsmenge;
public String Zuschlagsnummer;
public String AnlageBetriebsstatus;
public mastrGenerator1.VerknuepfteEinheit[] VerknuepfteEinheit;
private String[] EegMastrNummer_type_info = new String[]{'EegMastrNummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] LetzteAenderung_type_info = new String[]{'LetzteAenderung','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] Meldedatum_type_info = new String[]{'Meldedatum','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] DatumLetzteAktualisierung_type_info = new String[]{'DatumLetzteAktualisierung','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] InanspruchnahmeZahlungNachEeg_type_info = new String[]{'InanspruchnahmeZahlungNachEeg','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] AnlagenschluesselEeg_type_info = new String[]{'AnlagenschluesselEeg','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] AnlagenkennzifferAnlagenregister_type_info = new String[]{'AnlagenkennzifferAnlagenregister','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] InstallierteLeistung_type_info = new String[]{'InstallierteLeistung','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] EegInbetriebnahmedatum_type_info = new String[]{'EegInbetriebnahmedatum','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] Registrierungsnummer_type_info = new String[]{'Registrierungsnummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] MieterstromAngemeldet_type_info = new String[]{'MieterstromAngemeldet','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] MieterstromMeldedatum_type_info = new String[]{'MieterstromMeldedatum','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] MieterstromErsteZuordnungZuschlag_type_info = new String[]{'MieterstromErsteZuordnungZuschlag','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] AusschreibungZuschlag_type_info = new String[]{'AusschreibungZuschlag','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] ZugeordneteGebotsmenge_type_info = new String[]{'ZugeordneteGebotsmenge','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] Zuschlagsnummer_type_info = new String[]{'Zuschlagsnummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','1','false'};
private String[] AnlageBetriebsstatus_type_info = new String[]{'AnlageBetriebsstatus','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] VerknuepfteEinheit_type_info = new String[]{'VerknuepfteEinheit','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'0','-1','false'};
private String[] apex_schema_type_info = new String[]{'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle','true','false'};
private String[] field_order_type_info = new String[]{'EegMastrNummer','LetzteAenderung','Meldedatum','DatumLetzteAktualisierung','InanspruchnahmeZahlungNachEeg','AnlagenschluesselEeg','AnlagenkennzifferAnlagenregister','InstallierteLeistung','EegInbetriebnahmedatum','Registrierungsnummer','MieterstromAngemeldet','MieterstromMeldedatum','MieterstromErsteZuordnungZuschlag','AusschreibungZuschlag','ZugeordneteGebotsmenge','Zuschlagsnummer','AnlageBetriebsstatus','VerknuepfteEinheit'};
}
.....
.....
.....
public class AuthentifizierteAnfrageBasis {
public String apiKey;
private String[] apiKey_type_info = new String[]{'apiKey','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle','true','false'};
private String[] field_order_type_info = new String[]{'apiKey'};
}
public class GetAnlageEegSolarParameter {
public String apiKey;
public String marktakteurMastrNummer;
public String eegMastrNummer;
private String[] apiKey_type_info = new String[]{'apiKey','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] marktakteurMastrNummer_type_info = new String[]{'marktakteurMastrNummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] eegMastrNummer_type_info = new String[]{'eegMastrNummer','https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle','true','false'};
private String[] field_order_type_info = new String[]{'apiKey','marktakteurMastrNummer','eegMastrNummer'};
}
public class mastrGenerator2 {
public class Anlage {
public String endpoint_x = 'https://www.marktstammdatenregister.de/MaStRApi/Api.svc/Soap11/Anlage';
public Map<String,String> inputHttpHeaders_x;
public Map<String,String> outputHttpHeaders_x;
public String clientCertName_x;
public String clientCert_x;
public String clientCertPasswd_x;
public Integer timeout_x;
private String[] ns_map_type_info = new String[]{'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle', 'mastrGenerator1', 'https://www.marktstammdatenregister.de/Services/Public/1_1', 'mastrGenerator2', 'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle/Anlage', 'mastrGenerator3'};
public mastrGenerator1.GetAnlageEegSolarAntwort GetAnlageEegSolar(String apiKey,String marktakteurMastrNummer,String eegMastrNummer) {
mastrGenerator1.GetAnlageEegSolarParameter request_x = new mastrGenerator1.GetAnlageEegSolarParameter();
request_x.apiKey = apiKey;
request_x.marktakteurMastrNummer = marktakteurMastrNummer;
request_x.eegMastrNummer = eegMastrNummer;
mastrGenerator1.GetAnlageEegSolarAntwort response_x;
Map<String, mastrGenerator1.GetAnlageEegSolarAntwort> response_map_x = new Map<String, mastrGenerator1.GetAnlageEegSolarAntwort>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'GetAnlageEegSolar',
'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle/Anlage',
'GetAnlageEegSolarRequest',
'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle/Anlage',
'GetAnlageEegSolarResponse',
'mastrGenerator1.GetAnlageEegSolarAntwort'}
);
response_x = response_map_x.get('response_x');
return response_x;
}
public mastrGenerator1.GetEinheitSolarAntwort GetEinheitSolar() {
mastrGenerator1.GetEinheitSolarParameter request_x = new mastrGenerator1.GetEinheitSolarParameter();
mastrGenerator1.GetEinheitSolarAntwort response_x;
Map<String, mastrGenerator1.GetEinheitSolarAntwort> response_map_x = new Map<String, mastrGenerator1.GetEinheitSolarAntwort>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'GetEinheitSolar',
'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle/Anlage',
'GetEinheitSolarRequest',
'https://www.marktstammdatenregister.de/Services/Public/1_1/Modelle/Anlage',
'GetEinheitSolarResponse',
'mastrGenerator1.GetEinheitSolarAntwort'}
);
response_x = response_map_x.get('response_x');
return response_x;
}
}
}
I tried to make a call from mastrGenerator2 in debug, but it throws this error:
mastrGenerator2.Anlage testEinheit = new mastrGenerator2.Anlage();
public String apiKey = 'Enter Id';
public String marktakteurMastrNummer = 'ID';
public String eegMastrNummer = 'EEG911769853434';
mastrGenerator1.GetAnlageEegSolarAntwort result = testEinheit.GetAnlageEegSolar(apiKey,marktakteurMastrNummer,eegMastrNummer);
System.debug(result);
System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: apiKey fehlt faultcode=s:Receiver.ZugriffVerweigert faultactor=
Any fix to this?