AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DPD Webservice

Ein Thema von horstmeyer · begonnen am 3. Aug 2023 · letzter Beitrag vom 26. Okt 2024
 
horstmeyer

Registriert seit: 9. Aug 2021
46 Beiträge
 
#5

AW: DPD Webservice

  Alt 4. Aug 2023, 13:05
Den vollständige Quellcode des Webservice kann ich hier leider nicht einstellen, da dieser zu lang ist. Und man kann ihn nur abfragen, wenn man einen Zugang auf das DPD-Portal hat.
Ich kann nur die Demo-Anwendung in Java bereitstellen:
Code:
package test;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.xml.soap.SOAPException;
import java.net.URL;

import org.apache.axis.AxisFault;
import com.dpd.common.service.types.Authentication._2_0.AuthenticationFault;

import com.dpd.common.service.LoginService._2_0.*;
import com.dpd.common.service.types.LoginService._2_0.*;

import com.dpd.common.service.ShipmentService._4_4.*;
import com.dpd.common.service.types.ShipmentService._4_4.*;

import org.apache.axis.message.MessageElement;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.Constants;
import org.apache.axis.client.Stub;
import org.apache.axis.encoding.Base64;

import java.io.FileOutputStream;
import java.io.IOException;

public class ShipmentService44_storeOrders {

   public static void main(String[] args) throws SOAPException, IOException {
      LoginServiceProxy myApiSoapClient = new LoginServiceProxy();
      Login myLogin = new Login();

      try {
         myLogin = myApiSoapClient.getAuth("xxx", "xxx", "de_DE");
      } catch (RemoteException ex) {
         if (ex instanceof AxisFault) {
            if (ex instanceof AuthenticationFault) {
               System.out.println("FAULT CODE Login Service 2.0: " + ((AuthenticationFault) ex).getErrorCode());
               System.out.println("FAULT STRING Login Service 2.0: " + ((AuthenticationFault) ex).getErrorMessage());
            }
         }
      }
   
      // printOptions   
      PrintOption[] myPrintOptionList = new PrintOption[1];
      PrintOption myPrintOption = new PrintOption();   
      myPrintOption.setPaperFormat(com.dpd.common.service.types.ShipmentService._4_4.PrintOptionPaperFormat.A4);
      myPrintOption.setStartPosition(com.dpd.common.service.types.ShipmentService._4_4.StartPosition.UPPER_LEFT);
      myPrintOption.setOutputFormat(com.dpd.common.service.types.ShipmentService._4_4.OutputFormatType.PDF);
      myPrintOptionList[0] = myPrintOption;

      PrintOptions myPrintOptions = new PrintOptions();
      myPrintOptions.setSplitByParcel(false);
      myPrintOptions.setPrintOption(myPrintOptionList);   
      
      // order (1-30)
      ShipmentServiceData[] DPDOrderDataList = new ShipmentServiceData[1];
      DPDOrderDataList[0] = new ShipmentServiceData();

      // ----------- generalShipmentData
      GeneralShipmentData myGeneralShipmentData = new GeneralShipmentData();
      myGeneralShipmentData.setMpsCustomerReferenceNumber1("Article 123");
      myGeneralShipmentData.setMpsCustomerReferenceNumber2("Order 456");
      myGeneralShipmentData.setIdentificationNumber("Article 456");
      myGeneralShipmentData.setSendingDepot("0190");
      myGeneralShipmentData.setProduct(GeneralShipmentDataProduct.CL);
      myGeneralShipmentData.setMpsWeight(500);

      // ---------------------- sender
      AddressWithType mySender = new AddressWithType();
      mySender.setName1("Matratzen Direct AG");
      mySender.setName2("Christoph Bong");
      mySender.setStreet("Max-Planck-Str.");
      mySender.setHouseNo("35");
      mySender.setState(null);
      mySender.setCountry("DE");
      mySender.setZipCode("50858");
      mySender.setCity("Köln, Junkersdorf");
      mySender.setCustomerNumber("");
      mySender.setContact("");
      mySender.setPhone("+491786787676");
      myGeneralShipmentData.setSender(mySender);

      // ---------------------- recipient
      AddressWithType myRecipient = new AddressWithType();
      myRecipient.setName1("DPD Deutschland GmbH");
      myRecipient.setName2("");
      myRecipient.setStreet("Wailandtstr.");
      myRecipient.setHouseNo("1");
      myRecipient.setState(null);
      myRecipient.setCountry("DE");
      myRecipient.setZipCode("63741");
      myRecipient.setCity("Aschaffenburg");
      myRecipient.setCustomerNumber("");
      myRecipient.setContact("");
      myRecipient.setPhone("");
      myGeneralShipmentData.setRecipient(myRecipient);

      DPDOrderDataList[0].setGeneralShipmentData(myGeneralShipmentData);

      // ----------- parcels
      Parcel[] myParcelList = new Parcel[1];
      Parcel myParcel = new Parcel();
      myParcel.setCustomerReferenceNumber1("Article 123");
      myParcel.setCustomerReferenceNumber2("Order 456");
      myParcel.setWeight(500);
      myParcel.setContent("Smartphones");
      myParcelList[0] = myParcel;
      DPDOrderDataList[0].setParcels(myParcelList);

      // ----------- productAndServiceData
      ProductAndServiceData myProductAndServiceData = new ProductAndServiceData();

      myProductAndServiceData.setOrderType(ProductAndServiceDataOrderType.value1);

      // ---------------------- pickup
      Pickup myPickup = new Pickup();
      myPickup.setTour(0);
      myPickup.setQuantity(1);
      myPickup.setDate(20230803);
      myPickup.setFromTime1("1300");
      myPickup.setToTime1("1700");
      myPickup.setExtraPickup(1);

      // --------------------------------- collectionrequestaddress
      Address myCollectionRequestAddress = new Address();
      myCollectionRequestAddress.setName1("Matratzen Direct AG");
      myCollectionRequestAddress.setName2("Christoph Bong");
      myCollectionRequestAddress.setStreet("Max-Planck-Str.");
      myCollectionRequestAddress.setHouseNo("35");
      myCollectionRequestAddress.setState(null);
      myCollectionRequestAddress.setCountry("DE");
      myCollectionRequestAddress.setZipCode("50858");
      myCollectionRequestAddress.setCity("Köln, Junkersdorf");
      myCollectionRequestAddress.setCustomerNumber("");
      myCollectionRequestAddress.setContact("");
      myCollectionRequestAddress.setPhone("+491786787676");
      myPickup.setCollectionRequestAddress(myCollectionRequestAddress);

      myProductAndServiceData.setPickup(myPickup);

      // ---------------------- predict
      Notification myNotification = new Notification();
      myNotification.setChannel(NotificationChannel.value1);
      myNotification.setValue("m.mustermann@dpd.de");
      myNotification.setLanguage("DE");
      myProductAndServiceData.setPredict(myNotification);

      DPDOrderDataList[0].setProductAndServiceData(myProductAndServiceData);
      
      // storeOrders
      StoreOrders myStoreOrders = new StoreOrders();
      myStoreOrders.setPrintOptions(myPrintOptions);
      myStoreOrders.setOrder(DPDOrderDataList);
      
      // RESPONSE
      try {
         URL myEndpointURL = new URL("https://public-ws-stage.dpd.com/services/ShipmentService/V4_4/");
         ShipmentServicePublic_4_4Locator myShipmentService44Locator = new ShipmentServicePublic_4_4Locator();
         ShipmentServicePublic_4_4_SOAPStub myShipmentService44Webservice = new ShipmentServicePublic_4_4_SOAPStub(
               myEndpointURL, myShipmentService44Locator);
         Stub myStub = (Stub) myShipmentService44Webservice;

         SOAPHeaderElement header = new SOAPHeaderElement("http://dpd.com/common/service/types/Authentication/2.0",
               "authentication") {
            /**
                   * 
                   */
            private static final long serialVersionUID = 1L;

            @Override
            public void setAttribute(String namespace, String localName, String value) {
               if (!Constants.ATTR_MUST_UNDERSTAND.equals(localName)) {
                  super.setAttribute(namespace, localName, value);
               }
            }
         };
         
         MessageElement myDelisIDElement = new MessageElement();
         myDelisIDElement.setName("delisId");
         myDelisIDElement.setValue("sandboxdpd");
         header.addChild(myDelisIDElement);

         MessageElement myAuthTokenElement = new MessageElement();
         myAuthTokenElement.setName("authToken");
         myAuthTokenElement.setValue(myLogin.getAuthToken());
         header.addChild(myAuthTokenElement);

         MessageElement myMessageLanguage = new MessageElement();
         myMessageLanguage.setName("messageLanguage");
         myMessageLanguage.setValue("de_DE");
         header.addChild(myMessageLanguage);
         
         header.setActor(null);
         myStub.setHeader(header);

         // storeOrders   
         StoreOrdersResponse myStoreOrdersResponse = new StoreOrdersResponse();
         
         myStoreOrdersResponse = myShipmentService44Webservice.storeOrders(myStoreOrders);
      
         StoreOrdersResponseType myStoreOrdersResponseType = new StoreOrdersResponseType();
         myStoreOrdersResponseType = myStoreOrdersResponse.getOrderResult();
            
         List<ShipmentResponse> myShipmentResponseList = new ArrayList<ShipmentResponse>();
         myShipmentResponseList = Arrays.asList(myStoreOrdersResponseType.getShipmentResponses());
         if (myShipmentResponseList != null && myShipmentResponseList.size() > 0) {
            for (ShipmentResponse item : myShipmentResponseList) {
               if (item.getFaults() != null) {
                  // Error Handling
                  for (FaultCodeType myFault : item.getFaults()) {
                     System.out.println("FAULT CODE Shipment Service 4.3: " + myFault.getFaultCode());
                     System.out.println("FAULT STRING Shipment Service 4.3: " + myFault.getMessage() + "\n\n");
                  }
               }
               {
                  // Label PDF
                  if (myStoreOrdersResponseType.getOutput() != null) {            
                     String myBase64PDF = new String(Base64.encode(myStoreOrdersResponseType.getOutput().getContent()));
                     System.out.println("Base64 PDF String: " + myBase64PDF + "\n\n");
                     byte[] pdf_bytes = myStoreOrdersResponseType.getOutput().getContent();
                     FileOutputStream fos = new FileOutputStream(
                           "C://Users/.../Desktop/Test-PDF.pdf");
                     fos.write(pdf_bytes);
                     fos.close();
                  }

                  System.out.println("identificationNumber: " + item.getIdentificationNumber());
                  System.out.println("mpsId: " + item.getMpsId());
                  for (ParcelInformationType myParcelInformation : item.getParcelInformation()) {
                     System.out.println("parcelLabelNumber: " + myParcelInformation.getParcelLabelNumber());
                  }
               }
            }
         }

      } catch (RemoteException ex) {
         System.out.println(ex.toString());
         if (ex instanceof AxisFault) {
            if (ex instanceof AuthenticationFault) {
               System.out.println("FAULT CODE Shipment Service 4.4: " + ((AuthenticationFault) ex).getErrorCode());
               System.out.println("FAULT STRING Shipment Service 4.4: " + ((AuthenticationFault) ex).getErrorMessage());
            }
         }
      }
   }
}
Diesen muss ich jetzt nach Delphi überführen. Für die Login-Funktion ist mir dies schon gelungen, aber für die storeOrders-Funktion finde ich es schon deutlich schwieriger die Parameter richtig zu erstellen und zu übergeben. Hier mein funktionierendes Beispiel für die Login-Funktion:
Code:
procedure TForm1.MLButton1Click(Sender: TObject);
var
  myloginservice : LoginService;
begin
  try
    sSystem:='Testsystem';
    mylogin:=GetLoginService().getAuth(editlogin.Text,editpasswort.Text,'de_DE');
    myAuthToken:=mylogin.authToken;
    showmessage('delisId:'+mylogin.delisId+chr(13)+
                'customerUid:'+mylogin.customerUid+chr(13)+
                'authToken:'+myAuthToken+chr(13)+
                'depot:'+mylogin.depot+chr(13)+
                'System:'+sSystem);
  except
    showmessage('Bei der Anmeldung ist ein Fehler aufgetreten!');
  end;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz