Skip to main content

Hey I am working on a functionality which creates an LWC component through Apex class and I am stuck on Lightning Bundle Creation and giving some error for some reason.

ERROR : USER_DEBUG|[163]|DEBUG| Failed to deploy LWC Component: soapenv:ClientElement {http://soap.sforce.com/2006/04/metadata}markup invalid at this location in type LightningComponentBundle

 

can you help me I am assuming you used this in your LWC editor.

 

HttpRequest req = new HttpRequest();

        req.setEndpoint(getBaseURL() + '/services/Soap/m/54.0');

        req.setMethod('POST');

        req.setHeader('Content-Type', 'text/xml');

        req.setHeader('SOAPAction', 'createMetadata');

 

        String sessionId = UserInfo.getSessionId();

        String body = '<?xml version="1.0" encoding="UTF-8"?>'

            + '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:met="http://soap.sforce.com/2006/04/metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'

            + '    <soapenv:Header>'

            + '        <met:SessionHeader>'

            + '            <met:sessionId>' + sessionId + '</met:sessionId>'

            + '        </met:SessionHeader>'

            + '    </soapenv:Header>'

            + '    <soapenv:Body>'

            + '        <met:createMetadata>'

            + '            <met:metadata xsi:type="met:LightningComponentBundle">'

            + '                <met:fullName>' + lwcName + '</met:fullName>'

            + '                <met:apiVersion>54.0</met:apiVersion>'

            + '                <met:description>This is a test Lightning Web Component</met:description>'

            + '                <met:markup><![CDATA[' + lwcComponent.LWC_Html__c + ']]></met:markup>'

            + '                <met:controllerContent><![CDATA[' + lwcComponent.LWC_Js__c + ']]></met:controllerContent>'

            + '                <met:metaContent><![CDATA[' + lwcComponent.LWC_Code_XMl__c + ']]></met:metaContent>'

            + '                <met:isExposed>true</met:isExposed>'

            + '                <met:targets>'

            + '                    <met:target>lightning__AppPage</met:target>'

            + '                    <met:target>lightning__RecordPage</met:target>'

            + '                    <met:target>lightning__HomePage</met:target>'

            + '                </met:targets>'

            + '            </met:metadata>'

            + '        </met:createMetadata>'

            + '    </soapenv:Body>'

            + '</soapenv:Envelope>';

 

        req.setBody(body);

 

        Http http = new Http();

        HttpResponse res = http.send(req);

getting error code 500 

 

thanks in advance :-)

 

@* Salesforce Developers * 

1 resposta
  1. 18 de ago. de 2024, 17:16

    I think you need to usea a WSDL file to connect Salesforce with SOAP callouts. Here are some steps that you can follow:

     

    1. Obtain the WSDL File

    • WSDL (Web Services Description Language) file describes the web service. You'll need this file to generate the necessary Apex classes.
    • Obtain the WSDL file from the service provider.

    2. Generate Apex Classes from WSDL

    • In Salesforce, navigate to Setup.
    • Search for Apex Classes in the Quick Find box.
    • Click on Generate from WSDL.
    • Upload the WSDL file or provide a URL if it's hosted online.
    • Salesforce will generate the necessary Apex classes to interact with the SOAP service. These classes will include both the client and the request/response classes.

    3. Write the Apex Code

    • Initialize the SOAP Client: Use the generated classes to create and configure the SOAP client.
    • Make the SOAP Callout: Create instances of the request classes, set the appropriate values, and make the call.

    Here is an example of how you might do this:

    apex

    Copiar código// Assuming your generated classes are called 'MyService' and 'MyRequest'

    public class MySoapClient {

    public void callMyWebService() {

    // Instantiate the service class

    MyServiceSoap service = new MyServiceSoap();

    // Create a new request object

    MyRequest request = new MyRequest();

    request.someField = 'someValue';

    // Call the web service method

    MyResponse response = service.myWebServiceMethod(request);

    // Process the response

    System.debug('Response: ' + response.someResponseField);

    }

    }

    4. Handle Endpoint URL and Authentication

    • Endpoint URL: Sometimes, the WSDL file will include the endpoint URL, but you might need to update it if the service URL changes.
    • Authentication: If the SOAP service requires authentication, you’ll need to set up the necessary credentials in your request.

    Here you have another reference: https://trailhead.salesforce.com/content/learn/modules/apex_integration_services/apex_integration_soap_callouts

     

    All the best!

0/9000