张贴CL_HTTP_CLIENT多部分/表单数据错误

2020-09-12 11:15发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我正在发送剩余...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在发送剩余的api后期服务。后期服务是获取multipart/form-data。我只需添加1个文件。文件扩展名是.card。

我该如何解决这个问题?您能帮我吗?

但是出现此错误:


这是rest api结果手册:

这是我的abap代码:

 CONCATENATE lv_access_token lv_connect_sid lv_userid INTO lv_value由空格分隔。

   免费lo_http_client。

   呼叫方法cl_http_client => create_by_url

     出口

       网址= lv_url

     输入

       客户端= lo_http_client

     例外情况

       arguments_not_found = 1

       plugin_not_active = 2

       internal_error = 3

       其他= 4。



   如果sy-subrc <> 0。

     "错误处理

   万一。

   lo_http_client-> request-> set_method('POST')。

   lo_http_client-> request-> set_content_type(content_type ='multipart/form-data')。

   lo_http_client-> request-> set_header_field(name ='Accept'value ='application/json')。

   lo_http_client-> request-> set_header_field(name ='cookie'value = lv_value)。

   lo_http_client-> propertytype_logon_popup = lo_http_client-> co_disabled。



   数据:部分类型参考if_http_entity。



   部分= lo_http_client-> request-> add_multipart()。

   part-> set_content_type(content_type ='application/octet-stream')。

   part-> set_header_field(name = if_http_header_fields => content_disposition

                           value ='form-data; name =" card"; filename =" admin2.card"')。



   DATA:文件名TYPE字符串。

   文件名='/tmp/admin2.card'。



   DATA:lv_raw TYPE xstring。

   用于在传统二进制模式代码页" 1100"中输入的OPEN DATASET文件名。

   如果sy-subrc = 0。

     做。

       清除lv_raw。

       读取数据集文件名INTO lv_raw。

       如果sy-subrc EQ 0。

         呼叫方法part-> append_data

           出口

             数据= lv_raw。

       其他。

         出口。

       万一。

     ENDDO。

   万一。

   CLOSE DATASET文件名。



   呼叫方法lo_http_client->发送

     出口

       超时= 200

     例外情况

       http_communication_failure = 1

       http_invalid_state = 2

       http_processing_failed = 3

       其他= 4。

   如果sy-subrc = 0。

     调用方法lo_http_client-> receive

       例外情况

         http_communication_failure = 1

         http_invalid_state = 2

         http_processing_failed = 3

         其他= 5。

   万一。



   调用方法lo_http_client-> response-> get_status

     输入

       代码= lv_http_code

       原因= lv_http_reason。

   如果lv_http_code ='204'。



   万一。


 这是我的fiori代码:可以正常工作。
 onCardImport:function(oEvent){


 var fU = this.getView()。byId(" fileUploader");
 var domRef = fU.getFocusDomRef();
 var file = domRef.files [0];


 var xhr = new XMLHttpRequest();
 var fd = new FormData();
 var file = new File([file],file.name,{
 " type":"应用程序/八位字节流",
 " lastModified":Date.now()
 });


 xhr.open(" POST"," url:3000/api/wallet/import");
 xhr.onreadystatechange = function(){
 如果(xhr.readyState == 4 && xhr.status == 200){
 alert(JSON.parse(xhr.responseText));
 }
 };
 fd.append(" card",file);
 xhr.withCredentials = true;
 xhr.send(fd);


 }

 

(42.5 kB)
1条回答
Nir深蓝
2020-09-12 11:51 .采纳回答

我解决了。

我在标题字段中添加了新字段。

lo_http_client-> request-> set_header_field(name ='X-Access-Token'value = lv_token)。

一周热门 更多>

相关问答