SAP Cloud Platform Android应用无法上传媒体

2020-08-18 11:26发布

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

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


快速跟进:我100%确定要尝试上传的文件已存在并且可以访问。 我通过在处理之前创建它的副本来证明这一点。

------------------------

嗨,

我正在开发Android应用程序,并且正在使用CV_ATTACHMENT_SRV OData服务。 问题是我无法将媒体上传到该服务。

我使用方法

创建了ByteStream。
 ByteStream的内容= ByteStream.fromInput(inputStream); 

我尝试使用

 createMedia(EntityValue实体,StreamBase内容,HttpHeaders标头)

一种上传图片的服务方法,其中实体基本上是'OriginalContent'的实例,内容是之前创建的ByteStream,并且标头包含一些与OriginalContent相关的信息。

这就是我得到的:

 com.sap.cloud.mobile.odata.DataStreamException:流已关闭

 在com.sap.cloud.mobile.odata.http.OKByteStreamBody.writeTo(OKByteStreamBody.java:46)

 在okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:59)

 在okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)

 ... 

我试图弄清楚是否可以访问要上传的文件,因此我尝试了上述方法,将文件放在外部存储中并打包在项目中。 他们都没有工作。

你们遇到过这种情况吗? 我很难找到类似的情况。 请帮忙。

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

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


快速跟进:我100%确定要尝试上传的文件已存在并且可以访问。 我通过在处理之前创建它的副本来证明这一点。

------------------------

嗨,

我正在开发Android应用程序,并且正在使用CV_ATTACHMENT_SRV OData服务。 问题是我无法将媒体上传到该服务。

我使用方法

创建了ByteStream。
 ByteStream的内容= ByteStream.fromInput(inputStream); 

我尝试使用

 createMedia(EntityValue实体,StreamBase内容,HttpHeaders标头)

一种上传图片的服务方法,其中实体基本上是'OriginalContent'的实例,内容是之前创建的ByteStream,并且标头包含一些与OriginalContent相关的信息。

这就是我得到的:

 com.sap.cloud.mobile.odata.DataStreamException:流已关闭

 在com.sap.cloud.mobile.odata.http.OKByteStreamBody.writeTo(OKByteStreamBody.java:46)

 在okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:59)

 在okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)

 ... 

我试图弄清楚是否可以访问要上传的文件,因此我尝试了上述方法,将文件放在外部存储中并打包在项目中。 他们都没有工作。

你们遇到过这种情况吗? 我很难找到类似的情况。 请帮忙。

付费偷看设置
发送
4条回答
大道至简
1楼-- · 2020-08-18 12:14

您好 Tamas Makranczi

当您发送给createMedia的StreamBase值时,将发生此错误 方法为null。 您是否调试过以检查ByteStream类是否能够真正打开有问题的文件?

由于您没有共享设置inputStream变量的方式,因此有一些选择:

 android.content.Context context;
//外部资源(文件://或http://)
 InputStream inputStreamExt = context.getContentResolver()。openInputStream(uri);
//属于您的应用程序res文件夹的本地资源
 InputStream inputStreamInt = getResources()。openRawResource(R.raw.blank);
 

最诚挚的问候,
Ivan

骆驼绵羊
2楼-- · 2020-08-18 12:17

嘿Ivan,感谢您的答复。 您是对的,我没有分享打开输入流的方式。 我尝试了本地资源版本,但似乎无法正常工作。 我也尝试使用fromFile方法创建ByteStream,但没有尝试过您提到的第一个版本。 无论如何,ByteStream实例都不为null。 有什么办法知道ByteStream实例是否正确打开?

谢谢!

樱桃小丸子0093
3楼-- · 2020-08-18 11:56

嘿,伊万,我找到了解决方案。 原来我在例外时使用了这些库:

实现组:" com.sap.cloud.android",名称:" fiori",版本:3.0.0
 实现组:" com.sap.cloud.android",名称:" onboarding",版本:3.0.0
 实现组:" com.sap.cloud.android",名称:" odata",版本:3.0.0
 实现组:" com.sap.cloud.android",名称:" foundation",版本:3.0.0 

,并通过将这些库之一的版本升级到3.0.5摆脱了丑陋的异常(我猜是odata吗?)。 无论如何我都升级了它们。

您是否有指向变更日志的快速链接? 那会很有帮助。

无论如何,谢谢您的帮助!

最诚挚的问候,

Tamas Makranczi

Bunny_CDM
4楼-- · 2020-08-18 12:19

您好 Tamas Makranczi

该信息不是公开的 可用。 我所能找到的只是发行说明(当您从Service Marketplace下载SDK时,有一个小按钮可以打开SAP发行说明)。但是,SAP Notes上的信息并不是您想要的。 它们仅包含新功能信息。无论如何,对于SCP,您应该始终使用最新版本,因为SAP会不断更新解决方案。最好问候,
Ivan

一周热门 更多>