gpt4 book ai didi

c# - 将文件从 ASP.NET web api 返回到 android

转载 作者:行者123 更新时间:2023-11-30 03:49:56 26 4
gpt4 key购买 nike

我有一个 ASP.Net web api,它旨在通过互联网发送编码为 Base64 的新文件。为此,我有一个公开的 REST 服务:

    string imei = ControllerContext.Request.Headers.GetValues("IMEI").FirstOrDefault();
byte[] FileAsBytes = null;
String base64 = null;
var svcs = new CrudService.CrudServiceClient();

if (svcs.IsDeviceAccepted(imei))
{
FileAsBytes = svcs.DownloadSoftwareVersion();
}

if(FileAsBytes != null)
{
base64 = Convert.ToBase64String(FileAsBytes);
}

return base64;

还有一个私有(private)服务,即 CRUD 服务,它直接与数据库和核心层通信。

经过一些调试后,我发现该服务返回了正确的长度,类似于 4194304 字节,这似乎与文件的大小相对应。但是在客户端,我在 AsyncTask 中联系此服务:

    @Override
protected String doInBackground(String... params) {
Log.i("UpdateManager: ", "Inside doInBackground");

try {

String imei = params[0];
String urlString = "http://10.118.18.50/Mobile.RESTPublicService/api/SoftwareUpdate";

HttpPost post = new HttpPost(urlString);
post.addHeader("IMEI", imei);
response = httpClient.execute(post);

Log.w("Update-Response: ",
Integer.toString(response.getStatusLine().getStatusCode())
+ " " + response.getStatusLine());

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

is = response.getEntity().getContent();
IOUtils.copy(is, writer, "UTF-8");

_log.debug(writer.toString());

Log.w("CONTENT: ", writer.toString());
byte[] result = new byte[MAX_FILE_SIZE]; //7242880 b
result = decodeBase64(writer.toString());

Log.w("BYTE ARRAY LENGTH: ", Integer.toString(result.length));

}

} catch (ClientProtocolException e) {
Log.e("Client: ", e.getMessage());
_log.error(e.getMessage());
return FAILED_DUE_TO_EXCEPTION;
} catch (IOException e) {
Log.e("IO: ", e.getMessage());
_log.error(e.getMessage());
return FAILED_DUE_TO_EXCEPTION;
}
return response.getStatusLine().toString();
}

这里有趣的一点是 result = decodeBase64(writer.toString()); 和 decodeBase64 方法:

protected byte[] decodeBase64(String s) {
return Base64.decode(s);
}

字符串 s 是我从网络服务中得到的:

UEsDBBQACAgIAJteK0IAAAAAAAAAAAAAAAAZAAQAcmVzL2FuaW0vYWN0aXZpdHlmYWRlLnhtbP7KAABdkN9OwjAchc+PbW4YErnwgkRuuSGEek1MDI/SsMkmbF26es8D+AA+hs+hD6Wn0GXKab60/fq/ETK8CyCY4xNgL4TuCUPuyANZkEeyIXvySiaTqnGFbc1RO2MxHr9YU2+PbamRps5cWlmWv1ntKtNQ6ia3psqxXJbOtRul

这不是整个文件,但我可以看到这是 base64 编码

当这个字符串被传递给 decodeBase64 方法时,我只得到这个错误信息:

enter image description here

然后应用程序终止。这是处理Base64字符串的方式吗?有人可以建议我如何从这个 base64 字符串创建一个文件吗?我的第一个想法是将其转换为 byte 数组,然后创建一个文件。

最佳答案

在我看来你有一个带引号的字符串 - 因为 " 似乎让它爆炸了。网络服务是否返回一个 JSON 字符串?如果是,那么它将被引号包围,您必须将其取下才能从 base 64 解析它。

关于c# - 将文件从 ASP.NET web api 返回到 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com