Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Send UBL 2.1 via API POST
Message
From
29/11/2021 15:00:12
 
 
To
29/11/2021 06:19:21
General information
Forum:
Visual FoxPro
Category:
XML, XSD
Miscellaneous
Thread ID:
01682832
Message ID:
01682861
Views:
61
>Hi,
>
>Any idea?
>

Vojislav,

How far did you advance in building a request using pure VFP? MSXML2 or WinHttp classes can provide the basic communication features you require, the HTTP message you need to build it's kind of a structured text that you can build from scratch with regular VFP functions and commands (in the same way that someone wrote the C# class you used).

Can you share your VFP code as it is right now?

*----------------------------------------

Hi Antonio,

This is my simple code written in C #. Of course, in terms of production, the code is adapted in accordance with OOP (Object-oriented programming) using fields, properties, methods ...
This is just the so-called raw version, which works. This is simple example. This work fine.
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ubl2apipost
{
    class Program
    {
        private static void Main(string[] args)
        {
            var client = new RestClient("https://r19.praf.rs/api/invoice/v1/send/file/xml");

           //client.Timeout = -1;

            var request = new RestRequest(Method.POST);


            request.AddHeader("authorization-general", "Bearer  272BED09E023NotIsOriginal");
            request.AddHeader("Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImNlYzU4YzczN2M4NDRmY2IzZTFlOWE0N2I2OGU5NjQ4ZTNhODY3M2Q0OTAwN2Q5OGI5MDU0ZGI2OWZjMjYwMGNjZjhmZGE5ZWYwYWZiZmIxIn0.eyJhdWQiOiIxIiwianRpIjoiY2VjNThjNzM3Yzg0NGZjYjNlMWU5YTQ3YjY4ZTk2NDhlM2E4NjczZDQ5MDA3ZDk4YjkwNTRkYjY5ZmMyNjAwY2NmOGZkYTllZjBhZmJmYjEiLCJpYXQiOjE2Mzc1ODc0NTAsIm5iZiI6MTYzNzU4NzQ1MCwiZXhwIjoxNjY5MTIzNDUwLCJzdWIiOiIxIiwic2NvcGVzIjpbXSwidXNlcm5hbWUiOiJ2b2ppc2xhdi5jdmVqaWNAc3BsYWJvcmF0b3JpamEucnMiLCJsaWNlbnNlSUQiOjk2fQ.vAzrEk-IIC3oFI-SNcKGlzSgyml9GbAu-Slj4WtzGTPTRtvdrOD3pBYlM5ABymQnxXmxc6NFXFum6euiw9xvpusSto6Tqwo-DBytbTVQmtl2r_CeGZJq8puHMP4sBAV2jJpHghHARpYlAuPzROF_QXuAye_AYfMx0PWjDyb8huXCqkxKGzIFkBcokZCoCi2srmOzUzQsWXvtYLOt0L80xIn6Hig6AAQvvUkHQUmpqtS81biX5V7v_MGtX0aOd98mTx2bnJrMgbsQB131uocn7mWQGQYrzsOsyFbC_RC6DcuJ7WPMKU8Thn8snMnSLN9p8NyaeQ-nHiZf6esJQrJPfmeVasHVuI5PBUsVrr9K2kUzvR_YJn1-Fe9_JKyGlLqC7rr5SItU9_u6EwdJiVW7cIrddxDaDwhbkypa14SSA-QX_kzPM8zuUtN4XmNCSN6_OMSTyEBtdAc0Oq5W9cTXWBcU-W4btA44KbM0ZPdTjl-WpWiXK90rTP4T5vE9SBLO0W0If9bHwFPSS5df21gGxiR18v18ims__XfhA2lFALfAvAi1nC1BTfbI_GvoHceM3m96QGaIQ26L5qe_24lM2ZCy_4ezWEDNa1ydCIX7BodKkj_NotIsOriginal");
            request.AddHeader("Cookie", "kancelarko_session=Hti9dX4wY1VNprCY7PvzVjXLJZ09u1iWGzYGxCdS");
            request.AddFile("data", "MyUBL2-1-File.xml");
            request.AddParameter("type", "0");
            request.AddParameter("sef", "1");
            request.AddParameter("contacts[0][email]", "MyEmailAddress@MyDomen4Email.rs");
            request.AddParameter("contacts[0][name]", "FirstName LastName");



            IRestResponse response = client.Execute(request);

            Console.WriteLine(response.Content);
            string aaa = "sdsd";
        }
    }
}
I don't know how to write / translate this code in VFP


I've try (many solution, this is one), but this code in VFP - not working:
srcFile = [MyUBL2-1-File.xml]
data = Filetostr(m.srcFile)
fileName = justfName(m.srcFile)
boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"   

TEXT TO m.lcContent TEXTMERGE NOSHOW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="data"; filename="MyUBL2-1-File.xml"
Content-Type: text/xml

<<data>>
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="type"

0
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="sef"

1
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="contacts[0][email]"

MyEmailAddress@MyDomen4Email.rs
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="contacts[0][name]"

FirstName LastName
----WebKitFormBoundary7MA4YWxkTrZu0gW
ENDTEXT


m.liContent=LEN(m.lcContent)


m.loXMLHTTP=CREATEOBJECT("Msxml2.XMLHTTP.6.0")
=COMPROP(m.loXMLHTTP, "UTF8",1)

url="https://r19.praf.rs/api/invoice/v1/send/file/xml"

m.loXMLHTTP.Open("POST", url, .f.)

TEXT TO auth TEXTMERGE noshow
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImNlYzU4YzczN2M4NDRmY2IzZTFlOWE0N2I2OGU5NjQ4ZTNhODY3M2Q0OTAwN2Q5OGI5MDU0ZGI2OWZjMjYwMGNjZjhmZGE5ZWYwYWZiZmIxIn0.eyJhdWQiOiIxIiwianRpIjoiY2VjNThjNzM3Yzg0NGZjYjNlMWU5YTQ3YjY4ZTk2NDhlM2E4NjczZDQ5MDA3ZDk4YjkwNTRkYjY5ZmMyNjAwY2NmOGZkYTllZjBhZmJmYjEiLCJpYXQiOjE2Mzc1ODc0NTAsIm5iZiI6MTYzNzU4NzQ1MCwiZXhwIjoxNjY5MTIzNDUwLCJzdWIiOiIxIiwic2NvcGVzIjpbXSwidXNlcm5hbWUiOiJ2b2ppc2xhdi5jdmVqaWNAc3BsYWJvcmF0b3JpamEucnMiLCJsaWNlbnNlSUQiOjk2fQ.vAzrEk-IIC3oFI-SNcKGlzSgyml9GbAu-Slj4WtzGTPTRtvdrOD3pBYlM5ABymQnxXmxc6NFXFum6euiw9xvpusSto6Tqwo-DBytbTVQmtl2r_CeGZJq8puHMP4sBAV2jJpHghHARpYlAuPzROF_QXuAye_AYfMx0PWjDyb8huXCqkxKGzIFkBcokZCoCi2srmOzUzQsWXvtYLOt0L80xIn6Hig6AAQvvUkHQUmpqtS81biX5V7v_MGtX0aOd98mTx2bnJrMgbsQB131uocn7mWQGQYrzsOsyFbC_RC6DcuJ7WPMKU8Thn8snMnSLN9p8NyaeQ-nHiZf6esJQrJPfmeVasHVuI5PBUsVrr9K2kUzvR_YJn1-Fe9_JKyGlLqC7rr5SItU9_u6EwdJiVW7cIrddxDaDwhbkypa14SSA-QX_kzPM8zuUtN4XmNCSN6_OMSTyEBtdAc0Oq5W9cTXWBcU-W4btA44KbM0ZPdTjl-WpWiXK90rTP4T5vE9SBLO0W0If9bHwFPSS5df21gGxiR18v18ims__XfhA2lFALfAvAi1nC1BTfbI_GvoHceM3m96QGaIQ26L5qe_24lM2ZCy_4ezWEDNa1ydCIX7BodKkj_NotIsOriginal
ENDTEXT 


try
	m.loXMLHTTP.setRequestHeader('Host', 'r19.praf.rs')
	m.loXMLHTTP.setRequestHeader('Content-type', 'multipart/form-data; charset=utf-8; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW')
*	m.loXMLHTTP.setRequestHeader('Content-Length', m.liContent)
	m.loXMLHTTP.setRequestHeader('authorization-general', 'Bearer  272BED09E023NotIsOriginal')
	m.loXMLHTTP.setRequestHeader('Authorization', m.auth)
	m.loXMLHTTP.setRequestHeader('Cookie', 'kancelarko_session=Hti9dX4wY1VNprCY7PvzVjXLJZ09u1iWGzYGxCdS')
	m.loXMLHTTP.send(m.lcContent)
CATCH TO oerr
	SET STEP ON 
ENDTRY 

?m.loXMLHTTP.statustext
?m.loXMLHTTP.Status
?m.loXMLHTTP.responseTExt

RETURN 
But if I make it from a cURL (from PostMan) .bat file - then it works

the .bat file has been generated, I have all the necessary elements to generate one such .bat file - but I don't like this solution, although it works.
curl -X POST   "https://r19.praf.rs/api/invoice/v1/send/file/xml"   -H "accept: application/json"   -H "authorization-general: Bearer  272BED09E023NotIsOriginal"   -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImNlYzU4YzczN2M4NDRmY2IzZTFlOWE0N2I2OGU5NjQ4ZTNhODY3M2Q0OTAwN2Q5OGI5MDU0ZGI2OWZjMjYwMGNjZjhmZGE5ZWYwYWZiZmIxIn0.eyJhdWQiOiIxIiwianRpIjoiY2VjNThjNzM3Yzg0NGZjYjNlMWU5YTQ3YjY4ZTk2NDhlM2E4NjczZDQ5MDA3ZDk4YjkwNTRkYjY5ZmMyNjAwY2NmOGZkYTllZjBhZmJmYjEiLCJpYXQiOjE2Mzc1ODc0NTAsIm5iZiI6MTYzNzU4NzQ1MCwiZXhwIjoxNjY5MTIzNDUwLCJzdWIiOiIxIiwic2NvcGVzIjpbXSwidXNlcm5hbWUiOiJ2b2ppc2xhdi5jdmVqaWNAc3BsYWJvcmF0b3JpamEucnMiLCJsaWNlbnNlSUQiOjk2fQ.vAzrEk-IIC3oFI-SNcKGlzSgyml9GbAu-Slj4WtzGTPTRtvdrOD3pBYlM5ABymQnxXmxc6NFXFum6euiw9xvpusSto6Tqwo-DBytbTVQmtl2r_CeGZJq8puHMP4sBAV2jJpHghHARpYlAuPzROF_QXuAye_AYfMx0PWjDyb8huXCqkxKGzIFkBcokZCoCi2srmOzUzQsWXvtYLOt0L80xIn6Hig6AAQvvUkHQUmpqtS81biX5V7v_MGtX0aOd98mTx2bnJrMgbsQB131uocn7mWQGQYrzsOsyFbC_RC6DcuJ7WPMKU8Thn8snMnSLN9p8NyaeQ-nHiZf6esJQrJPfmeVasHVuI5PBUsVrr9K2kUzvR_YJn1-Fe9_JKyGlLqC7rr5SItU9_u6EwdJiVW7cIrddxDaDwhbkypa14SSA-QX_kzPM8zuUtN4XmNCSN6_OMSTyEBtdAc0Oq5W9cTXWBcU-W4btA44KbM0ZPdTjl-WpWiXK90rTP4T5vE9SBLO0W0If9bHwFPSS5df21gGxiR18v18ims__XfhA2lFALfAvAi1nC1BTfbI_GvoHceM3m96QGaIQ26L5qe_24lM2ZCy_4ezWEDNa1ydCIX7BodKkj_NotIsOriginal"   -H "Content-Type: multipart/form-data"   -F "data=@MyUBL2-1-File.xml"  -F "type=0"   -F "contacts[0][name]=FirstName LastName"   -F "contacts[0][email]=MyEmailAddress@MyDomen4Email.rs"   -F "sef=1"   -F "crf=0" > Answer_MyUBL2-1-File_2118495-00010-397711_20211127075700.json
Note:
for now I have solved this problem by making com in C# (console aplication) and instantiating it in vfp and thus forwarding all the parameters needed for this case API POST UBL

https://swagger-kanc.paragraf.rs/#/Slanje%20dokumenata/post_send_file_xml

If you have an idea how to convert C # code to VFP - it would be great.

Thanks for your time
Best regards
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform