Saya baru -baru ini mengambil alih proyek EDI dan mendapatkan banyak hal. Bahkan, saya melakukan kontak dengan EDI di perusahaan pertama saya. Pada saat itu, kami menggunakan EDI untuk mewujudkan transmisi data pesanan. Pelanggan menempatkan pesanan pembelian kepada kami dan menempatkan pesanan pembelian dalam bentuk pesan yang disepakati ke server file yang ditunjuk melalui alat VPN dan FTP. Kemudian sistem EDI kami akan secara teratur pergi ke server file untuk mendapatkan pesan, dan akhirnya menguraikan dan menghasilkan pesanan penjualan kami. Setelah bertahun -tahun, saya masih ingat bahwa yang paling saya gunakan adalah EDI850 dan EDI855.
1. Pertama, mari kita perkenalkan konsep EDI
Pertukaran data elektronik, pertukaran data elektronik.
EDI sebenarnya menggunakan pemberitahuan pesanan/pengiriman kertas asli dan dokumen bisnis lainnya dari metode tradisional seperti Fax/Express untuk digunakan untuk berinteraksi data elektronik online untuk meningkatkan efisiensi bisnis. Pada saat yang sama, melalui implementasi dan konfigurasi beberapa perangkat lunak EDI, data dokumen yang sesuai sering dapat dihasilkan langsung dari sistem bisnis perusahaan dan secara otomatis dikirimkan ke pelanggan/pemasok untuk mencapai efek aplikasi ke aplikasi dan menghindari kesalahan manusia (seperti kesalahan data, dll.) Dalam dokumen kertas. Oleh karena itu, perusahaan besar dengan sistem TI lengkap lebih suka EDI karena EDI transparan untuk personel bisnis, dan personel bisnis dapat mengoperasikan sistem bisnis harian mereka.
EDI tergantung pada beberapa bagian:
1. Jalur transmisi EDI. Secara umum, EDI terhubung langsung melalui protokol AS2, FTP/S, dll., Dan juga dapat ditransfer melalui penyedia layanan van pihak ketiga (jaringan nilai tambah) (ini sama dengan mode email kami). Karena melibatkan informasi bisnis, persyaratan keamanan transmisi akan relatif tinggi;
2. Standar EDI, yaitu, bentuk organisasi data bisnis, standar Amerika yang paling umum digunakan, ANSI X12, dan EDIFACT PBB dan Uni Eropa. Tentu saja, ada banyak standar lain. Selama kedua pihak EDI mengikuti standar yang sama, interaksi EDI dapat dicapai dengan baik;
3. Cara terbaik untuk mengimplementasikan perangkat lunak EDI (lingkungan) di kedua ujungnya adalah dengan secara otomatis mengirim dan menerima pesan EDI (file data) dengan perangkat lunak EDI dan secara otomatis mengintegrasikannya ke dalam sistem bisnis perusahaan.
Di jalur transmisi, kami menggunakan FTP untuk transfer file. Di sini saya terutama akan memperkenalkan bagaimana Java mengunggah dan mengunduh file melalui alat FTP. Di sini server FTP kami adalah sistem operasi Linux.
2. Referensi Paket Java
Di antara mereka, "commons-net-1.4.1.jar" dan "jakarta-oro-2.0.8.jar" dapat diunduh secara langsung dengan mengklik tautan, dan dijamin akan digunakan, sehingga semua orang dapat mengunduhnya dengan percaya diri.
3.
Jalur unggahan dari sisi server FTP adalah "/home/test/EDI850". Jika diunggah sebagai jalur, server FTP akan membuat jalur yang sesuai.
4. Kode Java
Kelas FTP
paket com.pcmall; kelas publik ftp {private string ipaddr; // ip address private integer port; // port nomor port string username; // username private string pwd; // password private string path; // path string publik getipaddr () {return ipaddr; } public void setipaddr (String ipaddr) {this.ipaddr = ipaddr; } public integer getport () {return port; } public void setport (port integer) {this.port = port; } public string getUserName () {return username; } public void setusername (string username) {this.username = username; } public string getPwd () {return pwd; } public void setPwd (String pwd) {this.pwd = pwd; } public string getPath () {return path; } public void setPath (string path) {this.path = path; }} Kelas ftputil
paket com.pcmall; impor java.io.file; impor java.io.fileInputStream; impor java.io.fileoutputStream; impor java.io.ioException; impor java.io.outputStream; impor org.apache.commons.net.ftp.ftpclient; impor org.apache.commons.net.ftp.ftpfile; impor org.apache.commons.net.ftp.ftpreply; impor org.apache.log4j.logger; kelas publik ftputil {private static logger logger = logger.getLogger (ftputil.class); FTP ftpclient statis pribadi; / ** * Dapatkan koneksi ftp * * @param f * @return * @throws Exception */ public static boolean connectftp (ftp f) melempar pengecualian {ftp = ftpclient baru (); bendera boolean = false; int balasan; if (f.getport () == null) {ftp.connect (f.getipaddr (), 21); } else {ftp.connect (f.getipaddr (), f.getport ()); } ftp.login (f.getUserName (), f.getpwd ()); ftp.setFileType (ftpclient.binary_file_type); Balas = ftp.getReplyCode (); if (! ftpreply.ispositiveCompletion (balasan)) {ftp.disconnect (); pengembalian bendera; } ftp.changeworkingdirectory (f.getPath ()); bendera = true; pengembalian bendera; } / *** Tutup koneksi ftp* / public static void closeFTp () {if (ftp! = Null && ftp.isconnected ()) {coba {ftp.logout (); ftp.disconnect (); } catch (ioException e) {e.printstacktrace (); }}} / ** * File unggah ftp * * @param f * @throws Exception * / public static void unggah (file f) melempar pengecualian {if (f.isdirectory ()) {ftp.makedirectory (f.getName ()); ftp.changeworkingdirectory (f.getName ()); String [] file = f.list (); untuk (string fstr: file) {file file1 = file baru (f.getPath () + "/" + fstr); if (file1.isDirectory ()) {unggah (file1); ftp.changetoparentdirectory (); } else {file file2 = file baru (f.getPath () + "/" + fstr); FileInputStream input = new FileInputStream (file2); ftp.storefile (file2.getname (), input); input.close (); }}} else {file file2 = file baru (f.getPath ()); FileInputStream input = new FileInputStream (file2); ftp.storefile (file2.getname (), input); input.close (); }} / ** * Unduh konfigurasi tautan * * @param f * @param localbasedir * Direktori lokal * @param jarak jauh * direktori jarak jauh * @throws Exception * / statis statis public statcdown (ftp f, string localbasedir, string remoteBaseDir) melempar pengecualian {if (ftputil.connecedir, string remotebasedir) Exception {if (ftputil.connectil {ftputil.connectpe (fring remotebasedir) Boolean ChangeNRIR = FTP.ChangeworkingDirectory (Remotebasedir); if (ubah) {ftp.setControlencoding ("gbk"); file = ftp.listFiles (); untuk (int i = 0; i <file.length; i ++) {coba {downloadfile (file [i], localbasedir, remoteBasedir); } catch (Exception e) {logger.error (e); Logger.Error ("<" + file [i] .getName () + "> Unduh Gagal"); }}}} catch (Exception e) {logger.error (e); Logger.Error ("Pengecualian terjadi selama pengunduhan"); }} else {logger.error ("tautan gagal!"); }} / ** * * Unduh File FTP Ketika Anda perlu mengunduh file FTP, hubungi metode ini untuk mengunduh berdasarkan nama file, alamat lokal, dan alamat jarak jauh yang diperoleh dengan <b> * @param ftpfile * @param Relativelocalpath * @param RelativereMoTePath * / Private Static Void Downloadfile (ftpeFile * @param ftpFile, ftatic void void private FTPLEFile RelativeremotePath) {if (ftpfile.isfile ()) {if (ftpfile.getName (). IndexOf ("?") == -1) {outputStream outputStream = null; coba {file locafile = file baru (relativelocalpath + ftpfile.getName ()); // Tentukan apakah ada file, dan if (locafile.exists ()) {return; } else {outputStream = FileOutputStream baru (relativelocalpath + ftpfile.getName ()); ftp.retrievefile (ftpfile.getName (), outputStream); outputStream.flush (); outputStream.close (); }} catch (Exception e) {logger.error (e); } akhirnya {coba {if (outputStream! = null) {outputStream.close (); }} catch (ioException e) {logger.error ("Pengecualian aliran file output"); }}}}} else {string newLocalrelatePath = relativelocalpath + ftpfile.getName (); String newRemote = string baru (relativeremotePath + ftpfile.getName (). ToString ()); File fl = file baru (newLocalrelatePath); if (! fl.exists ()) {fl.mkdir (); } coba {newLocalrelatePath = newLocalrelatePath + '/'; newremote = newremote + "/"; String currentWorkDir = ftpfile.getName (). ToString (); boolean changeir = ftp.changeworkingdir); if (ubah) {ftpfile [] file = null; file = ftp.listFiles (); untuk (int i = 0; i <file.length; i ++) {downloadfile (file [i], newLocalrelatePath, newRemote); }} if (ubah) {ftp.changetoparentDirectory (); }} catch (Exception e) {logger.error (e); }}} public static void main (string [] args) melempar pengecualian {ftp ftp = ftp baru (); ftp.setipaddr ("192.168.16.128"); ftp.setusername ("tes"); ftp.setpwd ("123456"); Ftputil.connectftp (ftp); File File = File Baru ("E:/EDI/EDI850/"); // Jika itu adalah path, semua file di bawah jalur akan diunggah. Jika itu adalah file, file akan diunggah ftputil.upload (file); // Unggah file di ftp ftputil.startdown (ftp, "e:/ftptest/", "/home/test/edi850"); // unduh file ftp untuk menguji, parameter kedua adalah puisi klien, dan paup. }}Setelah unggahan berhasil, situasi file server file FTP adalah sebagai berikut
Setelah unduhan berhasil, setelah file klien dibuka sebagai berikut, konten file adalah sebagai berikut. Cara mengunggah dan mengunduh file melalui alat FTP di EDI akan diperkenalkan di sini terlebih dahulu. Kode di atas yang saya uji secara pribadi dan dapat dijalankan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.