如何使用Genexus将这个多部分/表单数据发送到Web服务?



无论我测试什么时候,下面的CUrl都工作得很好:

curl --request PUT 
--url https://api.sandbox.URL_HERE/document-analysis/90471702021 
--header 'Accept: application/json' 
--header 'Authorization: Bearer AUTH_TOKEN' 
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' 
--header 'api-version: 1.0' 
--form documentType=RG 
--form documentSide=FRONT 
--form 'image=data:image/jpeg;name=RG_Front.jpg;base64,/9j/4AAQSkZJRgABAQEAAQABAAD/4Tn0RXhpZgAATU0AKgAAAAgABgALAAIAAAAmAAAIYgESAAMAAAABAAEAAAExAAIAAAAmAAAIiAEyAAIAAAAUAAAIrodpAAQAAAABAAAIwuocAAcAAAgMAAAAVgAAEUYc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JeLF8wysb6N95+837vqfyr2KvwCwP8VH2ABmkb5RQGx2qNm8zhTj3rk5rH0xImduKSY7UP0NPHFMlXcpHTrWiE9j8eNcuLbT/FWpXcipPi/uC1uyNIANzjHHBIyDjOOKyLW8eOS7gNrCTdRF7O3RiESOLUbZY4IdzF41TcQC2R87bm5bmv0mK4xg4HpSKvvUuTvoP6nT7n5yXf7KPxc1ZZVu/Blg6SzNM6HWwgJBCoC6PvYJGCqqWIGScE1auP2SPi/N5/k6PpzPNGgaS81OKRvMRsrIw2FXO0BeRkjqa/RPb6mk9s5p8zBYOmj88ZP2Q/i2bGZY9G0a3U5aOFdV3m2YjD+QzIfJDDIKgkYPGOtQ/8MY/F545IF0/w9DaTFQYDqLHZGH3MrfJ+8LHGWfeeOMV+ie31PNJt96lTfYr6pTPz7uv2Mfi1eNMGj8OqZFYSTSavcOZN3396mMpg4U4CjGwY4zmP/hhv4pLkJN4XXdsORqFwJBIo4lRxFuRupwDt55Br9BiWVckcD0py4ZfahzYfVKZ8FzfsY/FqaczjVPCkcwiMcbLLKFiJxmRUEITzG6l2UsSeopY/wBjH4sRRzww6l4at02qiqt5clSqjCAAx5GDluSQWJJB6V96YpazUmxfU6Z8Ff8ADC3xDa4eU6p4XVWDYgae6aJCTkFRtyMNlsZxknjHFWY/2IviSm+Qa54dt7qUbJbi3aVfMXn5inlbA4zw6gMvY55r7s/GkxVuTZX1Sl2PhrUv2JfHV7Ggh1Pw3BIhk2SMZ2I3kZY/J8zkKFJbOB0rPuP2F/iDJIZzrvhuKbIPmwrP5seAAuxsZGMYAHGCRz1r70C+9Ky7hg9KmMmxrC0k9j4Mtf2F/HlxZrt8ReGpY2V0fCTbZo2cNsdduOCOowck8mtLUP2KfiJeafZWr+INDuRZktH9pedgWzkM42fvCvG3eW24GMDivuCOBY12rgD2GKk21pqJ4Sk3sfBq/sP/ABNbAl8QeGpAsLQ5LTh3DtmTJCBvn6HBHy8DAqC3/YV+IdtZ+Ql/4R8pZBMIVM4jLjI3Y8v5SVwpweQBmvvnbRirF9Updj4Ot/2JfiVZyWskOq+FxLbAqkpeZmaM/wDLJw0RWVM5P7wMeevTEH/DE/xSEjynUfClxLJKJpWnuLhnmYcqrN5fCA/wJtX2r7320bB/kmkL6nTPgif9hv4kXWm2llc3vhG+jttzo11Lc5Dv98gogwWODkc5HBqoP2FPihHfPdprPhn7Vu3CWSSR9/GDvBhw/wBWyR2r9Atopdop3D6nTPgZf2I/icNJ+wDVvDpt/M4tje3IjEZBzECIw4QHB8sPtz+IPWfB39kbx54F+LWheJ9W1Lw/Np+nzO7x6c8yv5flNGkaIUCBFBGAOeTknivsvb15pjAD+LAHXNTKWg44WnF3Q9felIxTc84xUlZWTO0jf/V5709elFFa9QFooopgMXvT6KKACiiigAooooAKKKKACkHSiikAtFFFCAKKKKYBRRRQAVG1FFSwFX7tPoopIBrULRRR1AdTKKKUtgCnUUUgEXvUUP8AqxRRUMCSiiihbgFFFFNgMqWiinABaKKK2AKKKKACiiigAooooAZJ3qP+9RRWD3Akp9FFVED/2Q=='


上面的Base64字符串只是为了适合注释字段而被截断,但是您明白了。

我只需要使用HTTPClient发送一些信息到端点,但被卡住了,特别是因为Genexus说,当我试图将图像(1Mb)转换为base64字符串时,行太大。有人经历过吗?

Web Service似乎在期待新的" multipart/form-data ";而不是旧的"application/x-www-form-urlencoded"来上传文件,HTML 4.01中表单的规范部分在这里。所以,对于你的问题,我认为你可以使用HTTPClient数据类型的AddFile方法(如这里所解释的)来让你的客户端工作。阅读维基,上面写着:

特别是,如果HttpClient消息的内容是multipart/form-data(由content - type Header给出),那么AddFile方法将该文件添加为multipart。在这种情况下,需要第二个参数来指示文件所代表的变量的名称。此外,你必须在句子前面加上一个指定特定Content-Type的标题,就像这样:, Httpclient.Addheader("Content-Type"!"多部分/form-data")

我说"我认为"因为我没有测试自己,你可以试着让我们知道它是否有效。

最新更新